Module

Exists_mem_riemannRochSpace_not_mem_sub_single_of_ringEquiv_ratFunc.lean

Nyll.AlgebraicCurves.Cohomology.RiemannRoch.Exists_mem_riemannRochSpace_not_mem_sub_single_of_ringEquiv_ratFunc
72 declarations indexed from sourceView source ↗

Exists mem riemann Roch Space not mem sub single of ring Equiv rat Func

Declarations

AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.hasValue_zero
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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 hasValue_zero (v : Place K F) : v.HasValue (0 : F) 0
theorem

add

L59 ↗
AlgebraicCurve.Place.HasValue.add
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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}
namespace HasValue
open scoped _root_.AlgebraicCurve.Place.HasValue in
theorem _root_.AlgebraicCurve.Place.HasValue.add {g g' : F} {a a' : K} (h : v.HasValue g
  a) (h' : v.HasValue g' a') :
    v.HasValue (g + g') (a + a')
theorem

neg

L72 ↗
AlgebraicCurve.Place.HasValue.neg
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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
namespace HasValue
open scoped _root_.AlgebraicCurve.Place.HasValue in
theorem _root_.AlgebraicCurve.Place.HasValue.neg {g : F} {a : K} (h : v.HasValue g a) :
  v.HasValue (-g) (-a)
theorem

sub

L82 ↗
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.HasValue.sub
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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
open _root_.AlgebraicCurve.Place
open scoped _root_.AlgebraicCurve.Place.HasValue in
theorem HasValue.sub {g g' : F} {a a' : K} (h : v.HasValue g a) (h' : v.HasValue g' a') :
    v.HasValue (g - g') (a - a')
AlgebraicCurve.Place.HasValue.const_mul
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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
open _root_.AlgebraicCurve.Place
namespace HasValue
open scoped _root_.AlgebraicCurve.Place.HasValue in
theorem _root_.AlgebraicCurve.Place.HasValue.const_mul {g : F} {a : K} (c : K) (h :
  v.HasValue g a) :
    v.HasValue (c • g) (c * a)
theorem

pow

L98 ↗
AlgebraicCurve.Place.HasValue.pow
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
namespace HasValue
open scoped _root_.AlgebraicCurve.Place.HasValue in
theorem _root_.AlgebraicCurve.Place.HasValue.pow {g : F} {a : K} (h : v.HasValue g a) (n :
  ℕ) : v.HasValue (g ^ n) (a ^ n)
AlgebraicCurve.Place.HasValue.zpow
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
namespace HasValue
open scoped _root_.AlgebraicCurve.Place.HasValue in
theorem _root_.AlgebraicCurve.Place.HasValue.zpow {g : F} {a : K} (h : v.HasValue g a) (ha
  : a ≠ 0) (n : ℤ) :
    v.HasValue (g ^ n) (a ^ n)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.HasValue.prod
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
open scoped _root_.AlgebraicCurve.Place.HasValue in
theorem HasValue.prod {ι : Type*} (s : Finset ι) {g : ι → F} {a : ι → K}
    (h : ∀ i ∈ s, v.HasValue (g i) (a i)) : v.HasValue (∏ i ∈ s, g i) (∏ i ∈ s, a i)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.ord_prod
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
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
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
theorem ord_prod {ι : Type*} (s : Finset ι) {g : ι → F} (h : ∀ i ∈ s, g i ≠ 0) :
    v.ord (∏ i ∈ s, g i) = ∑ i ∈ s, v.ord (g i)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.twistedPairs

Pairs in two Riemann-Roch spaces satisfying the prescribed weighted value conditions.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
section TwistedPairs
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
def twistedPairs (E₁ E₂ : Divisor K F) {ι : Type*} (v₁ v₂ : ι → Place K F) (t₁ t₂ : ι → F)
    (lam : ι → K) : Submodule K (F × F) where
  carrier := {p | p.1 ∈ riemannRochSpace E₁ ∧ p.2 ∈ riemannRochSpace E₂ ∧
    ∀ i, ∃ c : K, (v₁ i).HasValue (t₁ i * p.1) (lam i * c) ∧ (v₂ i).HasValue (t₂ i * p.2) c}
  zero_mem' := ⟨Submodule.zero_mem _, Submodule.zero_mem _, fun i =>
    ⟨0, by simpa using Place.hasValue_zero (v₁ i), by simpa using Place.hasValue_zero (v₂ i)⟩⟩
  add_mem' := by
    rintro p q ⟨hp1, hp2, hp⟩ ⟨hq1, hq2, hq⟩
    refine ⟨Submodule.add_mem _ hp1 hq1, Submodule.add_mem _ hp2 hq2, fun i => ?_⟩
    obtain ⟨c, hc1, hc2⟩ := hp i
    obtain ⟨d, hd1, hd2⟩ := hq i
    refine ⟨c + d, ?_, ?_⟩
    · simpa [mul_add] using hc1.add hd1
    · simpa [mul_add] using hc2.add hd2
  smul_mem' := by
    rintro a p ⟨hp1, hp2, hp⟩
    refine ⟨Submodule.smul_mem _ a hp1, Submodule.smul_mem _ a hp2, fun i => ?_⟩
    obtain ⟨c, hc1, hc2⟩ := hp i
    refine ⟨a * c, ?_, ?_⟩
    · have := hc1.const_mul a
      rw [Prod.smul_fst, mul_smul_comm]
      convert this using 1
      ring
    · have := hc2.const_mul a
      rw [Prod.smul_snd, mul_smul_comm]
      exact this
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.mem_twistedPairs_iff
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
section TwistedPairs
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem mem_twistedPairs_iff {E₁ E₂ : Divisor K F} {ι : Type*} {v₁ v₂ : ι → Place K F}
    {t₁ t₂ : ι → F} {lam : ι → K} {p : F × F} :
    p ∈ twistedPairs E₁ E₂ v₁ v₂ t₁ t₂ lam ↔ p.1 ∈ riemannRochSpace E₁ ∧ p.2 ∈ riemannRochSpace E₂ ∧
      ∀ i, ∃ c : K, (v₁ i).HasValue (t₁ i * p.1) (lam i * c) ∧ (v₂ i).HasValue (t₂ i * p.2) c
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.twistedPairs_le_comp
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
section TwistedPairs
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem twistedPairs_le_comp {E₁ E₂ : Divisor K F} {ι ι' : Type*} (v₁ v₂ : ι → Place K F)
    (t₁ t₂ : ι → F) (lam : ι → K) (u : ι' → ι) :
    twistedPairs E₁ E₂ v₁ v₂ t₁ t₂ lam
      ≤ twistedPairs E₁ E₂ (v₁ ∘ u) (v₂ ∘ u) (t₁ ∘ u) (t₂ ∘ u) (lam ∘ u)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divisorPoints

The finite points whose places lie in the support of the rational-function divisor.

Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
def divisorPoints (E : Divisor k (RatFunc k)) : Finset k
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.mem_divisorPoints
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
theorem mem_divisorPoints {E : Divisor k (RatFunc k)} {a : k} :
    a ∈ divisorPoints k E ↔ E (placeOfPoint k a) ≠ 0
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.algebraMap_X_sub_C
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
theorem algebraMap_X_sub_C (a : k) :
    algebraMap k[X] (RatFunc k) (X - C a) = RatFunc.X - RatFunc.C a
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.ratFunc_X_sub_C_ne_zero
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
theorem ratFunc_X_sub_C_ne_zero (a : k) : (RatFunc.X - RatFunc.C a : RatFunc k) ≠ 0
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.ord_placeOfPoint_X_sub_C
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
open scoped Classical in
theorem ord_placeOfPoint_X_sub_C (a b : k) :
    (placeOfPoint k b).ord (RatFunc.X - RatFunc.C a : RatFunc k) = if b = a then 1 else 0 := by
  rw [← algebraMap_X_sub_C, ord_placeOfPoint_algebraMap b (X_sub_C_ne_zero a)]
  split_ifs with h
  · subst h
    exact_mod_cast rootMultiplicity_X_sub_C_self
  · rw [Nat.cast_eq_zero]
    refine rootMultiplicity_eq_zero ?_
    rw [IsRoot, eval_sub, eval_X, eval_C]
    exact sub_ne_zero.mpr h
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.ord_placeInfty_X_sub_C
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
theorem ord_placeInfty_X_sub_C [DecidableEq (RatFunc k)] (a : k) :
    (placeInfty k).ord (RatFunc.X - RatFunc.C a : RatFunc k) = -1
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divisorFn

The product of rational linear factors with exponents given by the divisor.

Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
def divisorFn (E : Divisor k (RatFunc k)) (S : Finset k) : RatFunc k
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divisorFn_ne_zero
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
theorem divisorFn_ne_zero (E : Divisor k (RatFunc k)) (S : Finset k) : divisorFn k E S ≠ 0
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divisorFn_eq_of_subset
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
theorem divisorFn_eq_of_subset {E : Divisor k (RatFunc k)} {S : Finset k} (hS : divisorPoints k E
  ⊆ S) :
    divisorFn k E S = divisorFn k E (divisorPoints k E)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divisorFn_insert_erase
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
theorem divisorFn_insert_erase [DecidableEq k] (E : Divisor k (RatFunc k)) (b : k) :
    divisorFn k E (divisorPoints k E)
      = (RatFunc.X - RatFunc.C b) ^ (E (placeOfPoint k b)) * divisorFn k E ((divisorPoints k
        E).erase b)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.ord_placeOfPoint_divisorFn
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
theorem ord_placeOfPoint_divisorFn {E : Divisor k (RatFunc k)} {S : Finset k} (hS : divisorPoints
  k E ⊆ S)
    (b : k) : (placeOfPoint k b).ord (divisorFn k E S) = E (placeOfPoint k b)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.ord_placeInfty_divisorFn
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
theorem ord_placeInfty_divisorFn [DecidableEq (RatFunc k)] (E : Divisor k (RatFunc k)) (S : Finset
  k) :
    (placeInfty k).ord (divisorFn k E S) = -∑ a ∈ S, E (placeOfPoint k a)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.support_subset_insert
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
open scoped Classical in
theorem support_subset_insert [IsAlgClosed k] [DecidableEq (RatFunc k)] (E : Divisor k (RatFunc
  k)) :
    E.support ⊆ insert (placeInfty k) ((divisorPoints k E).image (placeOfPoint k))
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.degree_eq_sum_divisorPoints
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
theorem degree_eq_sum_divisorPoints [IsAlgClosed k] [DecidableEq (RatFunc k)] (E : Divisor k
  (RatFunc k)) :
    E.degree = (∑ a ∈ divisorPoints k E, E (placeOfPoint k a)) + E (placeInfty k)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.degree_eq_sum_of_subset
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
variable (k : Type*) [Field k]
section Points
variable {k}
variable (k) in
theorem degree_eq_sum_of_subset [IsAlgClosed k] [DecidableEq (RatFunc k)] {E : Divisor k (RatFunc
  k)}
    {S : Finset k} (hS : divisorPoints k E ⊆ S) :
    E.degree = (∑ a ∈ S, E (placeOfPoint k a)) + E (placeInfty k)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.algebraMap_ne_zero'
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
theorem algebraMap_ne_zero' {P : k[X]} (hP : P ≠ 0) : algebraMap k[X] (RatFunc k) P ≠ 0
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.mem_degreeLT_iff_natDegree
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
theorem mem_degreeLT_iff_natDegree {P : k[X]} {n : ℕ} : P ∈ degreeLT k n ↔ P = 0 ∨ P.natDegree < n
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.ord_placeOfPoint_div_divisorFn
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
theorem ord_placeOfPoint_div_divisorFn {E : Divisor k (RatFunc k)} {S : Finset k}
    (hS : divisorPoints k E ⊆ S) {P : k[X]} (hP : P ≠ 0) (b : k) :
    (placeOfPoint k b).ord (algebraMap k[X] (RatFunc k) P / divisorFn k E S)
      = (rootMultiplicity b P : ℤ) - E (placeOfPoint k b)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.ord_placeInfty_div_divisorFn
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
theorem ord_placeInfty_div_divisorFn [DecidableEq (RatFunc k)] (E : Divisor k (RatFunc k)) (S :
  Finset k)
    {P : k[X]} (hP : P ≠ 0) :
    (placeInfty k).ord (algebraMap k[X] (RatFunc k) P / divisorFn k E S)
      = (∑ a ∈ S, E (placeOfPoint k a)) - P.natDegree
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.exists_eq_algebraMap_of_forall_ord_nonneg
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
theorem exists_eq_algebraMap_of_forall_ord_nonneg [IsAlgClosed k] {f : RatFunc k}
    (hf : ∀ a : k, 0 ≤ (placeOfPoint k a).ord f) :
    ∃ P : k[X], f = algebraMap k[X] (RatFunc k) P
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.div_divisorFn_mem_riemannRochSpace
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
omit [DecidableEq (RatFunc k)] in
theorem div_divisorFn_mem_riemannRochSpace (E : Divisor k (RatFunc k)) {P : k[X]}
    (hP : P ∈ degreeLT k (E.degree + 1).toNat) :
    algebraMap k[X] (RatFunc k) P / divisorFn k E (divisorPoints k E) ∈ riemannRochSpace E
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.exists_eq_div_divisorFn_of_mem
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
omit [DecidableEq (RatFunc k)] in
theorem exists_eq_div_divisorFn_of_mem (E : Divisor k (RatFunc k)) {f : RatFunc k}
    (hf : f ∈ riemannRochSpace E) :
    ∃ P : k[X], P ∈ degreeLT k (E.degree + 1).toNat ∧
      f = algebraMap k[X] (RatFunc k) P / divisorFn k E (divisorPoints k E)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divDivisorFn

Embed a polynomial into the function field and divide by the divisor function.

Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
omit [IsAlgClosed k] [DecidableEq (RatFunc k)] in
def divDivisorFn (E : Divisor k (RatFunc k)) : k[X] →ₗ[k] RatFunc k
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divDivisorFn_apply
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
omit [IsAlgClosed k] [DecidableEq (RatFunc k)] in
theorem divDivisorFn_apply (E : Divisor k (RatFunc k)) (P : k[X]) :
    divDivisorFn E P = algebraMap k[X] (RatFunc k) P / divisorFn k E (divisorPoints k E)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divDivisorFn_injective
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
omit [IsAlgClosed k] [DecidableEq (RatFunc k)] in
theorem divDivisorFn_injective (E : Divisor k (RatFunc k)) : Function.Injective (divDivisorFn E)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.riemannRochSpaceEquiv

The polynomial description of the Riemann-Roch space on the rational function field.

Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
def riemannRochSpaceEquiv (E : Divisor k (RatFunc k)) :
    degreeLT k (E.degree + 1).toNat ≃ₗ[k] riemannRochSpace E
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.finrank_degreeLT
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
omit [IsAlgClosed k] [DecidableEq (RatFunc k)] in
theorem finrank_degreeLT (n : ℕ) : Module.finrank k (degreeLT k n) = n
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.finrank_riemannRochSpace
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section RiemannRoch
variable {k : Type*} [Field k]
variable [IsAlgClosed k] [DecidableEq (RatFunc k)]
omit [DecidableEq (RatFunc k)] in
theorem finrank_riemannRochSpace (E : Divisor k (RatFunc k)) :
    Module.finrank k (riemannRochSpace E) = (E.degree + 1).toNat
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.hasValue_placeOfPoint_algebraMap
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Values
variable {k : Type*} [Field k]
theorem hasValue_placeOfPoint_algebraMap (b : k) (P : k[X]) :
    (placeOfPoint k b).HasValue (algebraMap k[X] (RatFunc k) P) (P.eval b)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.hasValue_placeOfPoint_X_sub_C
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Values
variable {k : Type*} [Field k]
theorem hasValue_placeOfPoint_X_sub_C (b a : k) :
    (placeOfPoint k b).HasValue (RatFunc.X - RatFunc.C a : RatFunc k) (b - a)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divisorFnEval

Evaluate the product of divisor-weighted linear factors at a base-field point.

Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Values
variable {k : Type*} [Field k]
variable (k) in
def divisorFnEval (E : Divisor k (RatFunc k)) (S : Finset k) (b : k) : k
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.divisorFnEval_ne_zero
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Values
variable {k : Type*} [Field k]
variable (k) in
theorem divisorFnEval_ne_zero (E : Divisor k (RatFunc k)) {S : Finset k} {b : k} (hb : b ∉ S) :
    divisorFnEval k E S b ≠ 0
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.hasValue_placeOfPoint_divisorFn
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Values
variable {k : Type*} [Field k]
variable (k) in
theorem hasValue_placeOfPoint_divisorFn (E : Divisor k (RatFunc k)) {S : Finset k} {b : k} (hb : b
  ∉ S) :
    (placeOfPoint k b).HasValue (divisorFn k E S) (divisorFnEval k E S b)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.hasValue_placeOfPoint_twist
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Values
variable {k : Type*} [Field k]
variable (k) in
theorem hasValue_placeOfPoint_twist [DecidableEq k] (E : Divisor k (RatFunc k)) (b : k) (P : k[X]) :
    (placeOfPoint k b).HasValue
      ((RatFunc.X - RatFunc.C b) ^ (E (placeOfPoint k b)) *
        (algebraMap k[X] (RatFunc k) P / divisorFn k E (divisorPoints k E)))
      (P.eval b / divisorFnEval k E ((divisorPoints k E).erase b) b)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.wEvalAt

The linear map evaluating a degree-bounded polynomial at the chosen points and multiplying by the chosen weights.

Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Interp
variable {k : Type*} [Field k] {ι : Type*}
def wEvalAt (a w : ι → k) (n : ℕ) : degreeLT k n →ₗ[k] (ι → k) where
  toFun P := fun i => w i * (P : k[X]).eval (a i)
  map_add' P Q := by ext i; simp [mul_add]
  map_smul' c P := by ext i; simp; ring
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.wEvalAt_apply
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Interp
variable {k : Type*} [Field k] {ι : Type*}
theorem wEvalAt_apply (a w : ι → k) (n : ℕ) (P : degreeLT k n) (i : ι) :
    wEvalAt a w n P i = w i * (P : k[X]).eval (a i)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.wEvalAt_surjective
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Interp
variable {k : Type*} [Field k] {ι : Type*}
variable [Fintype ι] [DecidableEq ι]
omit [DecidableEq ι] in
theorem wEvalAt_surjective {a w : ι → k} (ha : Function.Injective a) (hw : ∀ i, w i ≠ 0) {n : ℕ}
    (hn : Fintype.card ι ≤ n) : Function.Surjective (wEvalAt a w n)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.finrank_ker_coprod_neg_add
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Interp
variable {k : Type*} [Field k] {ι : Type*}
variable [Fintype ι] [DecidableEq ι]
variable {V₁ V₂ W : Type*} [AddCommGroup V₁] [Module k V₁] [AddCommGroup V₂] [Module k V₂]
  [AddCommGroup W] [Module k W]
omit [Fintype ι] [DecidableEq ι] in
theorem finrank_ker_coprod_neg_add [FiniteDimensional k V₁] [FiniteDimensional k V₂]
  [FiniteDimensional k W]
    (e₁ : V₁ →ₗ[k] W) (e₂ : V₂ →ₗ[k] W) (h : Function.Surjective e₁ ∨ Function.Surjective e₂) :
    Module.finrank k (LinearMap.ker (e₁.coprod (-e₂))) + Module.finrank k W
      = Module.finrank k V₁ + Module.finrank k V₂
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.twistWeight

The inverse value of the divisor function with the selected point omitted.

Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
def twistWeight (E : Divisor k (RatFunc k)) (b : k) : k
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.twistWeight_ne_zero
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
omit [IsAlgClosed k] [DecidableEq (RatFunc k)] in
theorem twistWeight_ne_zero (E : Divisor k (RatFunc k)) (b : k) : twistWeight E b ≠ 0
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.hasValue_twist'
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
omit [IsAlgClosed k] [DecidableEq (RatFunc k)] in
theorem hasValue_twist' (E : Divisor k (RatFunc k)) (b : k) (P : k[X]) :
    (placeOfPoint k b).HasValue
      ((RatFunc.X - RatFunc.C b) ^ (E (placeOfPoint k b)) *
        (algebraMap k[X] (RatFunc k) P / divisorFn k E (divisorPoints k E)))
      (twistWeight E b * P.eval b)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.twistFn

The rational linear factor at the selected point raised to the divisor coefficient.

Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
def twistFn (E : Divisor k (RatFunc k)) (b : k) : RatFunc k
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.twistedPairs_eq_map
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
omit [DecidableEq (RatFunc k)] in
theorem twistedPairs_eq_map (E₁ E₂ : Divisor k (RatFunc k)) (a b : ι → k) (lam : ι → k) :
    twistedPairs E₁ E₂ (fun i => placeOfPoint k (a i)) (fun i => placeOfPoint k (b i))
        (fun i => twistFn E₁ (a i)) (fun i => twistFn E₂ (b i)) lam
      = Submodule.map
          ((divDivisorFn E₁ ∘ₗ (degreeLT k (E₁.degree + 1).toNat).subtype).prodMap
            (divDivisorFn E₂ ∘ₗ (degreeLT k (E₂.degree + 1).toNat).subtype))
          (LinearMap.ker
            ((wEvalAt a (fun i => twistWeight E₁ (a i)) (E₁.degree + 1).toNat).coprod
              (-(wEvalAt b (fun i => lam i * twistWeight E₂ (b i)) (E₂.degree + 1).toNat)))) := by
  classical
  ext ⟨g₁, g₂⟩
  simp only [twistFn, mem_twistedPairs_iff, Submodule.mem_map, LinearMap.mem_ker,
    LinearMap.coprod_apply,
    LinearMap.neg_apply, LinearMap.prodMap_apply, LinearMap.coe_comp, Function.comp_apply,
    Submodule.coe_subtype, divDivisorFn_apply, Prod.mk.injEq, Prod.exists]
  constructor
  · rintro ⟨hg₁, hg₂, hnode⟩
    obtain ⟨P₁, hP₁, rfl⟩ := exists_eq_div_divisorFn_of_mem E₁ hg₁
    obtain ⟨P₂, hP₂, rfl⟩ := exists_eq_div_divisorFn_of_mem E₂ hg₂
    refine ⟨⟨P₁, hP₁⟩, ⟨P₂, hP₂⟩, ?_, rfl, rfl⟩
    ext i
    obtain ⟨c, hc₁, hc₂⟩ := hnode i
    have h₁ := hc₁.unique (hasValue_twist' E₁ (a i) P₁)
    have h₂ := hc₂.unique (hasValue_twist' E₂ (b i) P₂)
    simp only [Pi.add_apply, Pi.neg_apply, wEvalAt_apply, Pi.zero_apply]
    rw [mul_assoc, ← h₂, ← h₁, add_neg_cancel]
  · rintro ⟨P₁, P₂, hker, rfl, rfl⟩
    refine ⟨div_divisorFn_mem_riemannRochSpace E₁ P₁.2, div_divisorFn_mem_riemannRochSpace E₂ P₂.2,
      fun i => ?_⟩
    refine ⟨twistWeight E₂ (b i) * (P₂ : k[X]).eval (b i), ?_, hasValue_twist' E₂ (b i) _⟩
    have hi := congrFun hker i
    simp only [Pi.add_apply, Pi.neg_apply, wEvalAt_apply, Pi.zero_apply, add_neg_eq_zero] at hi
    have := hasValue_twist' E₁ (a i) (P₁ : k[X])
    rwa [hi, mul_assoc] at this
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.finiteDimensional_twistedPairs
Source context 18 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
omit [DecidableEq k] [DecidableEq (RatFunc k)] in
theorem finiteDimensional_twistedPairs (E₁ E₂ : Divisor k (RatFunc k)) (a b : ι → k) (lam : ι → k) :
    FiniteDimensional k
      (twistedPairs E₁ E₂ (fun i => placeOfPoint k (a i)) (fun i => placeOfPoint k (b i))
        (fun i => twistFn E₁ (a i)) (fun i => twistFn E₂ (b i)) lam) := by
  classical
  rw [twistedPairs_eq_map E₁ E₂ a b lam]
  infer_instance
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.finrank_twistedPairs_add_card
Source context 20 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
variable [Fintype ι] [DecidableEq ι]
omit [DecidableEq ι] in
omit [DecidableEq k] [DecidableEq (RatFunc k)] in
theorem finrank_twistedPairs_add_card (E₁ E₂ : Divisor k (RatFunc k))
    (a b : ι → k) (ha : Function.Injective a) (hb : Function.Injective b)
    (lam : ι → k) (hlam : ∀ i, lam i ≠ 0)
    (hcard : Fintype.card ι ≤ max (E₁.degree + 1).toNat (E₂.degree + 1).toNat) :
    Module.finrank k (twistedPairs E₁ E₂ (fun i => placeOfPoint k (a i)) (fun i => placeOfPoint k
      (b i))
        (fun i => twistFn E₁ (a i)) (fun i => twistFn E₂ (b i)) lam)
      + Fintype.card ι = (E₁.degree + 1).toNat + (E₂.degree + 1).toNat := by
  classical
  rw [twistedPairs_eq_map E₁ E₂ a b lam]
  have hinj : Function.Injective
      ((divDivisorFn E₁ ∘ₗ (degreeLT k (E₁.degree + 1).toNat).subtype).prodMap
        (divDivisorFn E₂ ∘ₗ (degreeLT k (E₂.degree + 1).toNat).subtype)) :=
    Function.Injective.prodMap ((divDivisorFn_injective E₁).comp Subtype.val_injective)
      ((divDivisorFn_injective E₂).comp Subtype.val_injective)
  rw [← (Submodule.equivMapOfInjective _ hinj _).finrank_eq]
  have key := finrank_ker_coprod_neg_add
    (wEvalAt a (fun i => twistWeight E₁ (a i)) (E₁.degree + 1).toNat)
    (wEvalAt b (fun i => lam i * twistWeight E₂ (b i)) (E₂.degree + 1).toNat) ?_
  · rw [finrank_degreeLT, finrank_degreeLT, Module.finrank_fintype_fun_eq_card] at key
    exact key
  · rcases le_max_iff.mp hcard with h | h
    · left
      exact wEvalAt_surjective ha (fun i => twistWeight_ne_zero E₁ (a i)) h
    · right
      exact wEvalAt_surjective hb (fun i => mul_ne_zero (hlam i) (twistWeight_ne_zero E₂ (b i))) h
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.finrank_twistedPairs_add_min_le
Source context 20 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Nodes
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*}
variable [Fintype ι] [DecidableEq ι]
omit [DecidableEq ι] in
omit [DecidableEq k] [DecidableEq (RatFunc k)] in
theorem finrank_twistedPairs_add_min_le (E₁ E₂ : Divisor k (RatFunc k))
    (a b : ι → k) (ha : Function.Injective a) (hb : Function.Injective b)
    (lam : ι → k) (hlam : ∀ i, lam i ≠ 0) :
    Module.finrank k (twistedPairs E₁ E₂ (fun i => placeOfPoint k (a i)) (fun i => placeOfPoint k
      (b i))
        (fun i => twistFn E₁ (a i)) (fun i => twistFn E₂ (b i)) lam)
      + min (Fintype.card ι) (max (E₁.degree + 1).toNat (E₂.degree + 1).toNat)
      ≤ (E₁.degree + 1).toNat + (E₂.degree + 1).toNat := by
  classical
  set m := min (Fintype.card ι) (max (E₁.degree + 1).toNat (E₂.degree + 1).toNat) with hm
  let u : Fin m ↪ ι := (Fin.castLEEmb (min_le_left _ _)).trans (Fintype.equivFin ι).symm.toEmbedding
  have hle := twistedPairs_le_comp (E₁ := E₁) (E₂ := E₂)
    (fun i => placeOfPoint k (a i)) (fun i => placeOfPoint k (b i))
    (fun i => twistFn E₁ (a i)) (fun i => twistFn E₂ (b i)) lam u
  have heq := finrank_twistedPairs_add_card E₁ E₂ (a ∘ u) (b ∘ u)
    (ha.comp u.injective) (hb.comp u.injective) (lam ∘ u) (fun i => hlam (u i))
    (by rw [Fintype.card_fin]; exact min_le_right _ _)
  rw [Fintype.card_fin] at heq
  have : FiniteDimensional k (twistedPairs E₁ E₂ ((fun i => placeOfPoint k (a i)) ∘ u)
      ((fun i => placeOfPoint k (b i)) ∘ u) ((fun i => twistFn E₁ (a i)) ∘ u) ((fun i => twistFn
        E₂ (b i)) ∘ u)
      (lam ∘ u)) :=
    finiteDimensional_twistedPairs E₁ E₂ (a ∘ u) (b ∘ u) (lam ∘ u)
  have hmono := Submodule.finrank_mono hle
  change Module.finrank k _ ≤ Module.finrank k
    (twistedPairs E₁ E₂ (fun i => placeOfPoint k ((a ∘ u) i)) (fun i => placeOfPoint k ((b ∘ u) i))
      (fun i => twistFn E₁ ((a ∘ u) i)) (fun i => twistFn E₂ ((b ∘ u) i)) (lam ∘ u)) at hmono
  omega
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.congrResidueAlgEquiv_residue
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
section CongrTransport
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem congrResidueAlgEquiv_residue (v : Place K F) (x : v.toValuationSubring) :
    congrResidueAlgEquiv e he v (IsLocalRing.residue _ x)
      = IsLocalRing.residue _ (comapSymmRingEquiv e v.toValuationSubring x)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.hasValue_congrRingEquiv_iff
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
section CongrTransport
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem hasValue_congrRingEquiv_iff (v : Place K F) (g : F) (c : K) :
    (congrRingEquiv e he v).HasValue (e g) c ↔ v.HasValue g c
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.mem_riemannRochSpace_mapDomain_congrEquiv_iff
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
section CongrTransport
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem mem_riemannRochSpace_mapDomain_congrEquiv_iff (D : Divisor K F) (f : F) :
    e f ∈ riemannRochSpace (Finsupp.mapDomain (congrEquiv e he) D) ↔ f ∈ riemannRochSpace D
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.degree_mapDomain_congrEquiv
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
section CongrTransport
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem degree_mapDomain_congrEquiv (D : Divisor K F) :
    Divisor.degree (Finsupp.mapDomain (congrEquiv e he) D) = Divisor.degree D
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.mapDomain_congrEquiv_mapDomain_symm
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
section CongrTransport
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem mapDomain_congrEquiv_mapDomain_symm (D' : Divisor K F') :
    Finsupp.mapDomain (congrEquiv e he) (Finsupp.mapDomain (congrEquiv e he).symm D') = D'
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.Place.mapDomain_symm_apply
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
section CongrTransport
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem mapDomain_symm_apply (D' : Divisor K F') (v : Place K F) :
    (Finsupp.mapDomain (congrEquiv e he).symm D') v = D' (congrEquiv e he v)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.twistedPairs_mapDomain_congrEquiv
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
section CongrTwisted
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem twistedPairs_mapDomain_congrEquiv (E₁ E₂ : Divisor K F) {ι : Type*} (v₁ v₂ : ι → Place K F)
    (t₁ t₂ : ι → F) (lam : ι → K) :
    twistedPairs (Finsupp.mapDomain (Place.congrEquiv e he) E₁) (Finsupp.mapDomain
      (Place.congrEquiv e he) E₂)
        (fun i => Place.congrEquiv e he (v₁ i)) (fun i => Place.congrEquiv e he (v₂ i))
        (fun i => e (t₁ i)) (fun i => e (t₂ i)) lam
      = Submodule.map (((AlgEquiv.ofRingEquiv (f := e) he).toLinearEquiv.prodCongr
          (AlgEquiv.ofRingEquiv (f := e) he).toLinearEquiv) : F × F →ₗ[K] F' × F')
          (twistedPairs E₁ E₂ v₁ v₂ t₁ t₂ lam) := by
  ext ⟨g₁', g₂'⟩
  obtain ⟨g₁, rfl⟩ := e.surjective g₁'
  obtain ⟨g₂, rfl⟩ := e.surjective g₂'
  have hmem : (e g₁, e g₂) ∈ Submodule.map (((AlgEquiv.ofRingEquiv (f := e)
    he).toLinearEquiv.prodCongr
          (AlgEquiv.ofRingEquiv (f := e) he).toLinearEquiv) : F × F →ₗ[K] F' × F')
          (twistedPairs E₁ E₂ v₁ v₂ t₁ t₂ lam) ↔ (g₁, g₂) ∈ twistedPairs E₁ E₂ v₁ v₂ t₁ t₂ lam := by
    constructor
    · rintro ⟨⟨f₁, f₂⟩, hf, hfe⟩
      have h1 : e f₁ = e g₁ := congrArg Prod.fst hfe
      have h2 : e f₂ = e g₂ := congrArg Prod.snd hfe
      obtain rfl := e.injective h1
      obtain rfl := e.injective h2
      exact hf
    · intro h
      exact ⟨(g₁, g₂), h, rfl⟩
  rw [hmem, mem_twistedPairs_iff, mem_twistedPairs_iff,
    Place.mem_riemannRochSpace_mapDomain_congrEquiv_iff,
      Place.mem_riemannRochSpace_mapDomain_congrEquiv_iff]
  simp only [Place.congrEquiv_apply, ← map_mul, Place.hasValue_congrRingEquiv_iff]
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.finrank_twistedPairs_mapDomain_congrEquiv
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
section CongrTwisted
variable {K F F' : Type*} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F']
variable (e : F ≃+* F') (he : ∀ a : K, e (algebraMap K F a) = algebraMap K F' a)
theorem finrank_twistedPairs_mapDomain_congrEquiv (E₁ E₂ : Divisor K F) {ι : Type*}
    (v₁ v₂ : ι → Place K F) (t₁ t₂ : ι → F) (lam : ι → K) :
    Module.finrank K (twistedPairs (Finsupp.mapDomain (Place.congrEquiv e he) E₁)
        (Finsupp.mapDomain (Place.congrEquiv e he) E₂)
        (fun i => Place.congrEquiv e he (v₁ i)) (fun i => Place.congrEquiv e he (v₂ i))
        (fun i => e (t₁ i)) (fun i => e (t₂ i)) lam)
      = Module.finrank K (twistedPairs E₁ E₂ v₁ v₂ t₁ t₂ lam) := by
  rw [twistedPairs_mapDomain_congrEquiv]
  exact LinearEquiv.finrank_map_eq _ _
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.finrank_twistedPairs_add_min_le_of_ringEquiv
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
section Model
variable {k F : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)] [Field
  F] [Algebra k F]
variable {ι : Type*} [Fintype ι]
omit [DecidableEq k] [DecidableEq (RatFunc k)] in
theorem finrank_twistedPairs_add_min_le_of_ringEquiv
    (e : RatFunc k ≃+* F) (he : ∀ c : k, e (algebraMap k (RatFunc k) c) = algebraMap k F c)
    (E₁ E₂ : Divisor k F)
    (a b : ι → k) (ha : Function.Injective a) (hb : Function.Injective b)
    (lam : ι → k) (hlam : ∀ i, lam i ≠ 0) :
    Module.finrank k (twistedPairs E₁ E₂
        (fun i => Place.congrEquiv e he (placeOfPoint k (a i)))
        (fun i => Place.congrEquiv e he (placeOfPoint k (b i)))
        (fun i => e ((RatFunc.X - RatFunc.C (a i)) ^ (E₁ (Place.congrEquiv e he (placeOfPoint k (a
          i))))))
        (fun i => e ((RatFunc.X - RatFunc.C (b i)) ^ (E₂ (Place.congrEquiv e he (placeOfPoint k (b
          i))))))
        lam)
      + min (Fintype.card ι) (max (E₁.degree + 1).toNat (E₂.degree + 1).toNat)
      ≤ (E₁.degree + 1).toNat + (E₂.degree + 1).toNat := by
  classical
  set E₁₀ : Divisor k (RatFunc k) := Finsupp.mapDomain (Place.congrEquiv e he).symm E₁ with hE₁₀
  set E₂₀ : Divisor k (RatFunc k) := Finsupp.mapDomain (Place.congrEquiv e he).symm E₂ with hE₂₀
  have h1 : E₁ = Finsupp.mapDomain (Place.congrEquiv e he) E₁₀ :=
    (Place.mapDomain_congrEquiv_mapDomain_symm e he E₁).symm
  have h2 : E₂ = Finsupp.mapDomain (Place.congrEquiv e he) E₂₀ :=
    (Place.mapDomain_congrEquiv_mapDomain_symm e he E₂).symm
  have hd1 : E₁₀.degree = E₁.degree := by rw [h1, Place.degree_mapDomain_congrEquiv]
  have hd2 : E₂₀.degree = E₂.degree := by rw [h2, Place.degree_mapDomain_congrEquiv]
  have ht1 : ∀ i, E₁ (Place.congrEquiv e he (placeOfPoint k (a i))) = E₁₀ (placeOfPoint k (a i)) :=
    fun i => (Place.mapDomain_symm_apply e he E₁ _).symm
  have ht2 : ∀ i, E₂ (Place.congrEquiv e he (placeOfPoint k (b i))) = E₂₀ (placeOfPoint k (b i)) :=
    fun i => (Place.mapDomain_symm_apply e he E₂ _).symm
  have key := finrank_twistedPairs_add_min_le (k := k) E₁₀ E₂₀ a b ha hb lam hlam
  have hfin := finrank_twistedPairs_mapDomain_congrEquiv e he E₁₀ E₂₀
    (fun i => placeOfPoint k (a i)) (fun i => placeOfPoint k (b i))
    (fun i => twistFn E₁₀ (a i)) (fun i => twistFn E₂₀ (b i)) lam
  rw [← hfin, ← h1, ← h2, hd1, hd2] at key
  have hsub : twistedPairs E₁ E₂
        (fun i => Place.congrEquiv e he (placeOfPoint k (a i)))
        (fun i => Place.congrEquiv e he (placeOfPoint k (b i)))
        (fun i => e ((RatFunc.X - RatFunc.C (a i)) ^ (E₁ (Place.congrEquiv e he (placeOfPoint k (a
          i))))))
        (fun i => e ((RatFunc.X - RatFunc.C (b i)) ^ (E₂ (Place.congrEquiv e he (placeOfPoint k (b
          i))))))
        lam
      = twistedPairs E₁ E₂
        (fun i => Place.congrEquiv e he (placeOfPoint k (a i)))
        (fun i => Place.congrEquiv e he (placeOfPoint k (b i)))
        (fun i => e (twistFn E₁₀ (a i))) (fun i => e (twistFn E₂₀ (b i))) lam := by
    ext p
    simp only [mem_twistedPairs_iff, twistFn, ht1, ht2]
  rw [hsub]
  exact key
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.exists_mem_riemannRochSpace_forall_hasValue_twist
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Avoidance
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*} [Fintype ι] [DecidableEq ι]
omit [DecidableEq ι] in
omit [DecidableEq k] [DecidableEq (RatFunc k)] in
theorem exists_mem_riemannRochSpace_forall_hasValue_twist (E : Divisor k (RatFunc k))
    (hE : Fintype.card ι ≤ (E.degree + 1).toNat) (a : ι → k) (ha : Function.Injective a) (c : ι →
      k) :
    ∃ p ∈ riemannRochSpace E, ∀ i, (placeOfPoint k (a i)).HasValue (twistFn E (a i) * p) (c i)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.exists_mem_riemannRochSpace_ord_eq
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section Avoidance
variable {k : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)]
variable {ι : Type*} [Fintype ι] [DecidableEq ι]
omit [DecidableEq k] [Fintype ι] [DecidableEq ι] in
omit [DecidableEq (RatFunc k)] in
theorem exists_mem_riemannRochSpace_ord_eq (E : Divisor k (RatFunc k)) (hE : 0 ≤ E.degree)
    (w : Place k (RatFunc k)) :
    ∃ p ∈ riemannRochSpace E, p ≠ 0 ∧ w.ord p = -E w
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.exists_mem_riemannRochSpace_forall_hasValue_twist_of_ringEquiv
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section AvoidanceModel
variable {k F : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)] [Field
  F] [Algebra k F]
variable {ι : Type*} [Fintype ι] [DecidableEq ι]
omit [DecidableEq ι] in
omit [DecidableEq k] [DecidableEq (RatFunc k)] in
theorem exists_mem_riemannRochSpace_forall_hasValue_twist_of_ringEquiv
    (e : RatFunc k ≃+* F) (he : ∀ c : k, e (algebraMap k (RatFunc k) c) = algebraMap k F c)
    (E : Divisor k F) (hE : Fintype.card ι ≤ (E.degree + 1).toNat)
    (a : ι → k) (ha : Function.Injective a) (c : ι → k) :
    ∃ p ∈ riemannRochSpace E, ∀ i,
      (Place.congrEquiv e he (placeOfPoint k (a i))).HasValue
        (e ((RatFunc.X - RatFunc.C (a i)) ^ (E (Place.congrEquiv e he (placeOfPoint k (a i))))) *
          p) (c i)
AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle.AlgebraicCurve.RationalFunctionField.exists_mem_riemannRochSpace_ord_eq_of_ringEquiv
Source context 19 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
noncomputable section
open IsLocalRing
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open Polynomial
open scoped Polynomial
section AvoidanceModel
variable {k F : Type*} [Field k] [DecidableEq k] [IsAlgClosed k] [DecidableEq (RatFunc k)] [Field
  F] [Algebra k F]
variable {ι : Type*} [Fintype ι] [DecidableEq ι]
omit [DecidableEq k] [Fintype ι] [DecidableEq ι] in
omit [DecidableEq (RatFunc k)] in
theorem exists_mem_riemannRochSpace_ord_eq_of_ringEquiv
    (e : RatFunc k ≃+* F) (he : ∀ c : k, e (algebraMap k (RatFunc k) c) = algebraMap k F c)
    (E : Divisor k F) (hE : 0 ≤ E.degree) (w : Place k F) :
    ∃ p ∈ riemannRochSpace E, p ≠ 0 ∧ w.ord p = -E w
AlgebraicCurve.exists_mem_riemannRochSpace_not_mem_sub_single_of_ringEquiv_ratFunc
Source context 5 commands

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

section ProofImplementation
namespace AlgebraicCurves.Cohomology.RiemannRoch.Proofs.ExistsMemRRSpaceNotMemSubSingle
attribute [-instance] AlgebraicCurve.RationalFunctionField.instNontrivialInftyValueGroup
attribute [-simp] AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
  AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
  AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
open _root_.AlgebraicCurve AlgebraicCurve _root_.AlgebraicCurve.RationalFunctionField
  AlgebraicCurve.RationalFunctionField in
theorem _root_.AlgebraicCurve.exists_mem_riemannRochSpace_not_mem_sub_single_of_ringEquiv_ratFunc
    {k F : Type*} [Field k] [IsAlgClosed k] [Field F] [Algebra k F]
    (e : RatFunc k ≃+* F) (he : ∀ c : k, e (algebraMap k (RatFunc k) c) = algebraMap k F c)
    (E : Divisor k F) (hE : 0 ≤ E.degree) (w : Place k F) :
    ∃ p ∈ riemannRochSpace E, p ∉ riemannRochSpace (E - Finsupp.single w 1)