Module

Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.lean

Nyll.AlgebraicCurves.Divisors.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
45 declarations indexed from sourceView source ↗

Divisor exists Unique pullback Constants eq of forall smul eq

Declarations

AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.inv_notMem_of_mem_nonunits
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem inv_notMem_of_mem_nonunits (B : ValuationSubring L) {x : L} (hx0 : x ≠ 0)
    (hx : x ∈ B.nonunits) : x⁻¹ ∉ B
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.mem_nonunits_of_inv_notMem
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem mem_nonunits_of_inv_notMem (B : ValuationSubring L) {x : L} (hx : x⁻¹ ∉ B) :
    x ∈ B.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.mem_nonunits_iff_inv_notMem
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem mem_nonunits_iff_inv_notMem (B : ValuationSubring L) {x : L} (hx0 : x ≠ 0) :
    x ∈ B.nonunits ↔ x⁻¹ ∉ B
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.zero_mem_nonunits
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem zero_mem_nonunits (B : ValuationSubring L) : (0 : L) ∈ B.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.sub_mem_nonunits
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem sub_mem_nonunits (B : ValuationSubring L) {x y : L} (hx : x ∈ B.nonunits)
    (hy : y ∈ B.nonunits) : x - y ∈ B.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.add_mem_nonunits
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem add_mem_nonunits (B : ValuationSubring L) {x y : L} (hx : x ∈ B.nonunits)
    (hy : y ∈ B.nonunits) : x + y ∈ B.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.nonunits_le
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem nonunits_le (B : ValuationSubring L) {x : L} (hx : x ∈ B.nonunits) : x ∈ B
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.mk_mem_maximalIdeal_iff_mem_nonunits
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem mk_mem_maximalIdeal_iff_mem_nonunits (B : ValuationSubring L) {x : L} (hx : x ∈ B) :
    (⟨x, hx⟩ : B) ∈ maximalIdeal B ↔ x ∈ B.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.mem_nonunits_iff_of_forall_mem_iff
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section ValSub
variable {L : Type*} [Field L]
theorem mem_nonunits_iff_of_forall_mem_iff {L' : Type*} [Field L'] {E : Type*} [FunLike E L L']
    [RingHomClass E L L'] (g : E) (A : ValuationSubring L) (B : ValuationSubring L')
    (h : ∀ x, x ∈ A ↔ g x ∈ B) (x : L) : x ∈ A.nonunits ↔ g x ∈ B.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.eq_zero_of_algebraMap_mem_nonunits
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem eq_zero_of_algebraMap_mem_nonunits (W : Place K F) {a : K}
    (ha : algebraMap K F a ∈ W.toValuationSubring.nonunits) : a = 0
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.ResBij

The condition that the base field maps bijectively onto the residue field of the place.

Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
def ResBij (W : Place K F) : Prop
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resBij_of_isAlgClosed
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem resBij_of_isAlgClosed [IsAlgClosed K] [IsCurveOver K F] (W : Place K F) : ResBij W
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resHom

The residue map to K obtained from the bijectivity of the map to the residue field.

Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
def resHom (W : Place K F) (hW : ResBij W) : W.toValuationSubring →ₐ[K] K
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resHom_apply
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem resHom_apply (W : Place K F) (hW : ResBij W) (g : W.toValuationSubring) :
    resHom W hW g = (RingEquiv.ofBijective (algebraMap K W.ResidueField) hW).symm
      (IsLocalRing.residue _ g)
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.algebraMap_resHom
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem algebraMap_resHom (W : Place K F) (hW : ResBij W) (g : W.toValuationSubring) :
    algebraMap K W.ResidueField (resHom W hW g) = IsLocalRing.residue _ g
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resHom_spec
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem resHom_spec (W : Place K F) (hW : ResBij W) (g : W.toValuationSubring) :
    (g : F) - algebraMap K F (resHom W hW g) ∈ W.toValuationSubring.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resHom_eq_iff
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem resHom_eq_iff (W : Place K F) (hW : ResBij W) (g : W.toValuationSubring) (a : K) :
    resHom W hW g = a ↔ (g : F) - algebraMap K F a ∈ W.toValuationSubring.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.mem_nonunits_iff_resHom_eq_zero
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem mem_nonunits_iff_resHom_eq_zero (W : Place K F) (hW : ResBij W)
    (g : W.toValuationSubring) :
    (g : F) ∈ W.toValuationSubring.nonunits ↔ resHom W hW g = 0
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resHom_eq_of_sub_mem_nonunits
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem resHom_eq_of_sub_mem_nonunits (W : Place K F) (hW : ResBij W)
    (g g' : W.toValuationSubring) (h : (g : F) - g' ∈ W.toValuationSubring.nonunits) :
    resHom W hW g = resHom W hW g'
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.coe_aeval_mk
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem coe_aeval_mk (W : Place K F) {x : F} (hx : x ∈ W.toValuationSubring) (P : K[X]) :
    ((aeval (⟨x, hx⟩ : W.toValuationSubring) P : W.toValuationSubring) : F) = aeval x P
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.aeval_mem
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem aeval_mem (W : Place K F) {x : F} (hx : x ∈ W.toValuationSubring) (P : K[X]) :
    aeval x P ∈ W.toValuationSubring
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resHom_aeval
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Residue
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
theorem resHom_aeval (W : Place K F) (hW : ResBij W) {x : F} (hx : x ∈ W.toValuationSubring)
    (P : K[X]) :
    resHom W hW ⟨aeval x P, aeval_mem W hx P⟩ = P.eval (resHom W hW ⟨x, hx⟩)
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.Over

The condition that the extended place restricts to the given place of the original function field.

Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Over
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
local notation "ι" => algebraMap F₀ F
def Over (v : Place k F₀) (W : Place K F) : Prop
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.mem_iff_of_over
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Over
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
local notation "ι" => algebraMap F₀ F
theorem mem_iff_of_over {v : Place k F₀} {W : Place K F} (hW : Over v W) (f : F₀) :
    f ∈ v.toValuationSubring ↔ ι f ∈ W.toValuationSubring
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.nonunits_iff_of_over
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Over
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
local notation "ι" => algebraMap F₀ F
theorem nonunits_iff_of_over {v : Place k F₀} {W : Place K F} (hW : Over v W) (f : F₀) :
    ι f ∈ W.toValuationSubring.nonunits ↔ f ∈ v.toValuationSubring.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.mem_smul_place_iff
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Over
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
local notation "ι" => algebraMap F₀ F
open scoped Pointwise
theorem mem_smul_place_iff (g : SemilinearAut K F) (W : Place K F) (x : F) :
    x ∈ (g • W).toValuationSubring ↔ g⁻¹ • x ∈ W.toValuationSubring
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.smul_mem_smul_place_iff
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Over
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
local notation "ι" => algebraMap F₀ F
open scoped Pointwise
theorem smul_mem_smul_place_iff (g : SemilinearAut K F) (W : Place K F) (x : F) :
    g • x ∈ (g • W).toValuationSubring ↔ x ∈ W.toValuationSubring
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.smul_mem_nonunits_smul_iff
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Over
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
local notation "ι" => algebraMap F₀ F
open scoped Pointwise
theorem smul_mem_nonunits_smul_iff (g : SemilinearAut K F) (W : Place K F) (x : F) :
    g • x ∈ (g • W).toValuationSubring.nonunits ↔ x ∈ W.toValuationSubring.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.over_smul
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Over
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
local notation "ι" => algebraMap F₀ F
open scoped Pointwise
theorem over_smul {v : Place k F₀} {W : Place K F} (hW : Over v W) (g : SemilinearAut K F)
    (hg : ∀ x : F₀, g • ι x = ι x) : Over v (g • W)
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.theta_mem
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
omit [Algebra k K] [Algebra k F] [IsScalarTower k K F] [IsScalarTower k F₀ F] in
theorem theta_mem {v : Place k F₀} {W : Place K F} (hW : Over v W) (θ : v.toValuationSubring) :
    ι (θ : F₀) ∈ W.toValuationSubring
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.αv

The base-field residue of an integral element at a place above the original place.

Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
def αv {v : Place k F₀} (W : Place K F) (hb : ResBij W) (hW : Over v W)
    (θ : v.toValuationSubring) : K
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.theta_sub_alpha_mem
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
omit [Algebra k K] [Algebra k F] [IsScalarTower k K F] [IsScalarTower k F₀ F] in
theorem theta_sub_alpha_mem {v : Place k F₀} {W : Place K F} (hb : ResBij W) (hW : Over v W)
    (θ : v.toValuationSubring) :
    ι (θ : F₀) - algebraMap K F (αv W hb hW θ) ∈ W.toValuationSubring.nonunits
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.alpha_eq_of_mem_nonunits
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
omit [Algebra k K] [Algebra k F] [IsScalarTower k K F] [IsScalarTower k F₀ F] in
theorem alpha_eq_of_mem_nonunits {v : Place k F₀} {W : Place K F} (hb : ResBij W) (hW : Over v W)
    (θ : v.toValuationSubring) {a : K}
    (h : ι (θ : F₀) - algebraMap K F a ∈ W.toValuationSubring.nonunits) : αv W hb hW θ = a
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.coe_aeval
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
theorem coe_aeval (v : Place k F₀) (θ : v.toValuationSubring) (P : k[X]) :
    ((aeval θ P : v.toValuationSubring) : F₀) = aeval (θ : F₀) P
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.algebraMap_aeval
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
theorem algebraMap_aeval (θ : F₀) (P : k[X]) :
    ι (aeval θ P) = aeval (ι θ) (P.map (algebraMap k K))
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.resHom_algebraMap_aeval
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
theorem resHom_algebraMap_aeval {v : Place k F₀} {W : Place K F} (hb : ResBij W) (hW : Over v W)
    (θ : v.toValuationSubring) (P : k[X]) :
    resHom W hb ⟨ι (aeval (θ : F₀) P), (mem_iff_of_over hW _).mp (by
        rw [← coe_aeval]; exact Subtype.mem _)⟩
      = (P.map (algebraMap k K)).eval (αv W hb hW θ) := by
  have hΘ := theta_mem hW θ
  have h1 : (⟨ι (aeval (θ : F₀) P), (mem_iff_of_over hW _).mp (by
        rw [← coe_aeval]; exact Subtype.mem _)⟩ : W.toValuationSubring)
      = ⟨aeval (ι (θ : F₀)) (P.map (algebraMap k K)), aeval_mem W hΘ _⟩ := by
    apply Subtype.ext
    exact algebraMap_aeval (θ : F₀) P
  rw [h1, resHom_aeval]
  rfl
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.isRoot_alpha
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
theorem isRoot_alpha {v : Place k F₀} {W : Place K F} (hb : ResBij W) (hW : Over v W)
    (θ : v.toValuationSubring) :
    ((minpoly k (IsLocalRing.residue _ θ)).map (algebraMap k K)).IsRoot (αv W hb hW θ)
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.α

The residue value in the algebraically closed constant field at the extending place.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
variable [IsAlgClosed K] [IsCurveOver K F]
def α {v : Place k F₀} (θ : v.toValuationSubring) (W : Place K F) (hW : Over v W) : K
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.alpha_smul
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
variable [IsAlgClosed K] [IsCurveOver K F]
omit [Algebra k K] [Algebra k F] [IsScalarTower k K F] [IsScalarTower k F₀ F] in
theorem alpha_smul {v : Place k F₀} (θ : v.toValuationSubring) {W : Place K F} (hW : Over v W)
    (g : SemilinearAut K F) (hg : ∀ x : F₀, g • ι x = ι x) :
    α θ (g • W) (over_smul hW g hg) = SemilinearAut.baseAut g (α θ W hW)
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.eq_of_alpha_eq
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
variable [IsAlgClosed K] [IsCurveOver K F]
theorem eq_of_alpha_eq [PerfectField k] [IsCurveOver k F₀]
    (hfg : ∃ s : Finset F₀, IntermediateField.adjoin k (s : Set F₀) = ⊤)
    (hgen : IntermediateField.adjoin K (Set.range (algebraMap F₀ F)) = ⊤)
    (hLD : ∀ (n : ℕ) (f : Fin n → F₀) (c : Fin n → K), LinearIndependent k f →
      ∑ i, algebraMap K F (c i) * algebraMap F₀ F (f i) = 0 → ∀ i, c i = 0)
    {v : Place k F₀} (θ : v.toValuationSubring)
    (hθ : IntermediateField.adjoin k {IsLocalRing.residue _ θ} = ⊤)
    {W₁ W₂ : Place K F} (h₁ : Over v W₁) (h₂ : Over v W₂)
    (hα : α θ W₁ h₁ = α θ W₂ h₂) : W₁ = W₂
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.exists_smul_eq_of_over
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Transitive
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
local notation "ι" => algebraMap F₀ F
variable [IsAlgClosed K] [IsCurveOver K F]
theorem exists_smul_eq_of_over [PerfectField k] [IsCurveOver k F₀]
    (hfg : ∃ s : Finset F₀, IntermediateField.adjoin k (s : Set F₀) = ⊤)
    (hgen : IntermediateField.adjoin K (Set.range (algebraMap F₀ F)) = ⊤)
    (hLD : ∀ (n : ℕ) (f : Fin n → F₀) (c : Fin n → K), LinearIndependent k f →
      ∑ i, algebraMap K F (c i) * algebraMap F₀ F (f i) = 0 → ∀ i, c i = 0)
    (G : Subgroup (SemilinearAut K F))
    (hG₀ : ∀ g ∈ G, ∀ x : F₀, g • ι x = ι x)
    (hGK : ∀ a : K, (∀ g ∈ G, SemilinearAut.baseAut g a = a) → a ∈ Set.range (algebraMap k K))
    {v : Place k F₀} {W₁ W₂ : Place K F} (h₁ : Over v W₁) (h₂ : Over v W₂) :
    ∃ g ∈ G, g • W₁ = W₂
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.hconst_of_hLD
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Hyps
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
theorem hconst_of_hLD [IsAlgClosed K]
    (hLD : ∀ (n : ℕ) (f : Fin n → F₀) (c : Fin n → K), LinearIndependent k f →
      ∑ i, algebraMap K F (c i) * algebraMap F₀ F (f i) = 0 → ∀ i, c i = 0) :
    ∀ y : F₀, IsAlgebraic k y → y ∈ (algebraMap k F₀).range
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.adjoin_range_eq_top
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Hyps
variable {k K F₀ F : Type*} [Field k] [Field K] [Field F₀] [Field F]
  [Algebra k F₀] [Algebra K F] [Algebra F₀ F] [Algebra k K] [Algebra k F]
  [IsScalarTower k K F] [IsScalarTower k F₀ F]
theorem adjoin_range_eq_top [Algebra.IsIntegral F₀ F]
    (hgen : IntermediateField.adjoin K (Set.range (algebraMap F₀ F)) = ⊤) :
    Algebra.adjoin F₀ (Set.range (algebraMap K F)) = ⊤
AlgebraicCurves.Divisors.Proofs.Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq.P2mSchmidtDescent2.main
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
noncomputable section
open Polynomial IsLocalRing AlgebraicCurve
namespace P2mSchmidtDescent2
section Descent
variable {k K F₀ F : Type*} [Field k] [PerfectField k] [Field K] [IsAlgClosed K]
  [Field F₀] [Field F] [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
  [Algebra k K] [Algebra k F] [IsScalarTower k K F] [IsScalarTower k F₀ F]
  [Algebra.IsAlgebraic k K] [Algebra.IsIntegral F₀ F]
  [IsCurveOver k F₀] [IsCurveOver K F]
theorem main
    (hfg : ∃ s : Finset F₀, IntermediateField.adjoin k (s : Set F₀) = ⊤)
    (hgen : IntermediateField.adjoin K (Set.range (algebraMap F₀ F)) = ⊤)
    (hLD : ∀ (n : ℕ) (f : Fin n → F₀) (c : Fin n → K), LinearIndependent k f →
      ∑ i, algebraMap K F (c i) * algebraMap F₀ F (f i) = 0 → ∀ i, c i = 0)
    (G : Subgroup (SemilinearAut K F))
    (hG₀ : ∀ g ∈ G, ∀ x : F₀, g • algebraMap F₀ F x = algebraMap F₀ F x)
    (hGK : ∀ a : K, (∀ g ∈ G, SemilinearAut.baseAut g a = a) → a ∈ Set.range (algebraMap k K))
    (D : Divisor K F) (hD : ∀ g ∈ G, g • D = D) :
    ∃! D₀ : Divisor k F₀, Divisor.pullbackConstants K F D₀ = D
AlgebraicCurve.Divisor.existsUnique_pullbackConstants_eq_of_forall_smul_eq
Source context 4 commands

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

section ProofImplementation
namespace AlgebraicCurves.Divisors.Proofs
namespace Divisor_existsUnique_pullbackConstants_eq_of_forall_smul_eq
open P2mSchmidtDescent2 in
theorem _root_.AlgebraicCurve.Divisor.existsUnique_pullbackConstants_eq_of_forall_smul_eq
    {k K F₀ F : Type*} [Field k] [PerfectField k] [Field K] [IsAlgClosed K]
    [Field F₀] [Field F] [Algebra k F₀] [Algebra K F] [Algebra F₀ F]
    [Algebra k K] [Algebra k F] [IsScalarTower k K F] [IsScalarTower k F₀ F]
    [Algebra.IsAlgebraic k K] [Algebra.IsIntegral F₀ F]
    [AlgebraicCurve.IsCurveOver k F₀] [AlgebraicCurve.IsCurveOver K F]
    (hfg : ∃ s : Finset F₀, IntermediateField.adjoin k (s : Set F₀) = ⊤)
    (hgen : IntermediateField.adjoin K (Set.range (algebraMap F₀ F)) = ⊤)
    (hLD : ∀ (n : ℕ) (f : Fin n → F₀) (c : Fin n → K), LinearIndependent k f →
      ∑ i, algebraMap K F (c i) * algebraMap F₀ F (f i) = 0 → ∀ i, c i = 0)
    (G : Subgroup (AlgebraicCurve.SemilinearAut K F))
    (hG₀ : ∀ g ∈ G, ∀ x : F₀, g • algebraMap F₀ F x = algebraMap F₀ F x)
    (hGK : ∀ a : K, (∀ g ∈ G, AlgebraicCurve.SemilinearAut.baseAut g a = a) →
      a ∈ Set.range (algebraMap k K))
    (D : AlgebraicCurve.Divisor K F) (hD : ∀ g ∈ G, g • D = D) :
    ∃! D₀ : AlgebraicCurve.Divisor k F₀,
      AlgebraicCurve.Divisor.pullbackConstants K F D₀ = D