Module

IsIntegrallyClosed_exists_valuationSubring_mem_iff_and_nonunits_iff_of_height_eq_one.lean

Nyll.AlgebraicCurves.Valuations.IsIntegrallyClosed_exists_valuationSubring_mem_iff_and_nonunits_iff_of_height_eq_one
1 declaration indexed from sourceView source ↗

Is Integrally Closed exists valuation Subring mem iff and nonunits iff of height eq one

Imports12
  • Mathlib.RingTheory.DiscreteValuationRing.TFAE
  • Mathlib.RingTheory.Ideal.Height
  • Mathlib.RingTheory.Ideal.Maps
  • Mathlib.RingTheory.Ideal.Span
  • Mathlib.RingTheory.IntegralClosure.IntegrallyClosed
  • Mathlib.RingTheory.Localization.AsSubring
  • Mathlib.RingTheory.Localization.AtPrime.Basic
  • Mathlib.RingTheory.Localization.Ideal
  • Mathlib.RingTheory.Localization.Submodule
  • Mathlib.RingTheory.LocalRing.ResidueField.Basic
  • Mathlib.RingTheory.Valuation.ValuationSubring
  • Mathlib.Tactic.ByContra
Imported by1

Declarations

IsIntegrallyClosed.exists_valuationSubring_mem_iff_and_nonunits_iff_of_height_eq_one
Source context 4 commands

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

section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsIntegrallyClosed_exists_valuationSubring_mem_iff_and_nonunits_iff_of_height_eq_one
open IsLocalRing
theorem _root_.IsIntegrallyClosed.exists_valuationSubring_mem_iff_and_nonunits_iff_of_height_eq_one
    {C K : Type*} [CommRing C] [IsDomain C] [IsNoetherianRing C] [IsIntegrallyClosed C]
    [Field K] [Algebra C K] [IsFractionRing C K]
    (P : Ideal C) [P.IsPrime] (hP : P.height = 1) :
    ∃ V : ValuationSubring K,
      (∀ x : K, x ∈ V ↔ ∃ c s : C, s ∉ P ∧ x * algebraMap C K s = algebraMap C K c) ∧
      (∀ c : C, algebraMap C K c ∈ V) ∧
      (∀ c : C, algebraMap C K c ∈ V.nonunits ↔ c ∈ P) ∧
      (∀ ϖ : C, ϖ ∈ P →
        ((∀ f : K, f ∈ V.nonunits → ∃ g : K, g ∈ V ∧ f = algebraMap C K ϖ * g) ↔
          IsLocalRing.maximalIdeal (Localization.AtPrime P) =
            Ideal.span {algebraMap C (Localization.AtPrime P) ϖ})) ∧
      ∃ ι : IsLocalRing.ResidueField ↥V ≃+* P.ResidueField,
        ∀ (c : C) (hc : algebraMap C K c ∈ V),
          ι (IsLocalRing.residue ↥V ⟨algebraMap C K c, hc⟩) = algebraMap C P.ResidueField c