Module

Scheme_IdealSheafData_comap_ker_subschemeIota_comp_mapOnProdOver_eq_and_saturated_of_isDiscreteValuationRing.lean

Nyll.AlgebraicCurves.Geometry.Sheaves.Scheme_IdealSheafData_comap_ker_subschemeIota_comp_mapOnProdOver_eq_and_saturated_of_isDiscreteValuationRing
4 declarations indexed from sourceView source ↗

Scheme Ideal Sheaf Data comap ker subscheme Iota comp map On Prod Over eq and saturated of

is Discrete Valuation Ring

Imports5
Imported by2

Declarations

AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal.LABody.isLocalizationAway_of_irreducible
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal
universe u
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
namespace LABody
open _root_.AlgebraicGeometry.Scheme
section DVR
variable {O : Type u} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
  (T' : Type u) [Field T'] [Algebra O T'] [IsFractionRing O T']
theorem isLocalizationAway_of_irreducible {ϖ : O} (hϖ : Irreducible ϖ) : IsLocalization.Away ϖ T'
  where
  map_units := fun ⟨y, hy⟩ => by
    obtain ⟨n, rfl⟩ := hy
    exact IsUnit.mk0 _ (by
      rw [map_pow]
      exact pow_ne_zero _ (fun h => hϖ.ne_zero ((IsFractionRing.injective O T')
        (by rw [h, map_zero]))))
  surj := fun z => by
    obtain ⟨a, b, hb, rfl⟩ := IsFractionRing.div_surjective (A := O) z
    have hb0 : b ≠ 0 := nonZeroDivisors.ne_zero hb
    obtain ⟨n, u, rfl⟩ := IsDiscreteValuationRing.eq_unit_mul_pow_irreducible hb0 hϖ
    refine ⟨⟨a * ↑u⁻¹, ⟨ϖ ^ n, n, rfl⟩⟩, ?_⟩
    have hb' : algebraMap O T' (↑u * ϖ ^ n) ≠ 0 := fun h =>
      hb0 ((IsFractionRing.injective O T') (by rw [h, map_zero]))
    change algebraMap O T' a / algebraMap O T' (↑u * ϖ ^ n) * algebraMap O T' (ϖ ^ n) =
      algebraMap O T' (a * ↑u⁻¹)
    rw [div_mul_eq_mul_div, div_eq_iff hb', ← map_mul, ← map_mul]
    congr 1
    rw [show a * ↑u⁻¹ * (↑u * ϖ ^ n) = a * (↑u⁻¹ * ↑u) * ϖ ^ n by ring, Units.inv_mul, mul_one]
  exists_of_eq := fun {a b} h => ⟨1, by rw [IsFractionRing.injective O T' h]⟩
AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal.LABody.isOpenImmersion_specMap_algebraMap
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal
universe u
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
namespace LABody
open _root_.AlgebraicGeometry.Scheme
section DVR
variable {O : Type u} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
  (T' : Type u) [Field T'] [Algebra O T'] [IsFractionRing O T']
theorem isOpenImmersion_specMap_algebraMap :
    IsOpenImmersion (Spec.map (CommRingCat.ofHom (algebraMap O T')))
AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal.LABody.specMap_algebraMap_apply
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal
universe u
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
namespace LABody
open _root_.AlgebraicGeometry.Scheme
section DVR
variable {O : Type u} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
  (T' : Type u) [Field T'] [Algebra O T'] [IsFractionRing O T']
omit [IsDiscreteValuationRing O] in
theorem specMap_algebraMap_apply (x : Spec (CommRingCat.of T')) :
    (Spec.map (CommRingCat.ofHom (algebraMap O T'))).base x = (⊥ : PrimeSpectrum O)
AlgebraicGeometry.Scheme.IdealSheafData.comap_ker_subschemeIota_comp_mapOnProdOver_eq_and_saturated_of_isDiscreteValuationRing
Source context 6 commands

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

section ProofImplementation
namespace AlgebraicGeometry.Scheme.IdealSheafData
open _root_.AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal
universe u
open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.AlgebraicGeometry
open _root_.AlgebraicCurves.Geometry.Sheaves.Proofs.SaturatedProductIdeal.LABody in
theorem comap_ker_subschemeIota_comp_mapOnProdOver_eq_and_saturated_of_isDiscreteValuationRing
    {𝒞 S : Scheme.{u}} {f : 𝒞 ⟶ S}
    {O : Type u} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O] (g : Spec (CommRingCat.of O)
      ⟶ S)
    (T' : Type u) [Field T'] [Algebra O T'] [IsFractionRing O T']
    {gT : Spec (CommRingCat.of T') ⟶ S} (hψ : Spec.map (CommRingCat.ofHom (algebraMap O T')) ≫ g =
      gT)
    (I : (pullback f gT).IdealSheafData) :
    ((I.subschemeι ≫ mapOnProdOver f (Spec.map (CommRingCat.ofHom (algebraMap O T'))) hψ).ker).comap
        (mapOnProdOver f (Spec.map (CommRingCat.ofHom (algebraMap O T'))) hψ) = I ∧
      ∀ (ϖ : O), Irreducible ϖ → ∀ (U : (pullback f g).affineOpens) (s : Γ(pullback f g, U)),
        (pullback f g).presheaf.map (homOfLE (le_top : (U : (pullback f g).Opens) ≤ ⊤)).op
            ((pullback.snd f g).appTop ((Scheme.ΓSpecIso (CommRingCat.of O)).inv ϖ)) * s ∈
            (I.subschemeι ≫ mapOnProdOver f (Spec.map (CommRingCat.ofHom (algebraMap O T')))
              hψ).ker.ideal U →
          s ∈ (I.subschemeι ≫ mapOnProdOver f (Spec.map (CommRingCat.ofHom (algebraMap O T')))
            hψ).ker.ideal U