Lean sources / SurfaceBlowup / Etale / Algebra.lean

The étale monic density in algebra language

58 lines · 2 public declarations · raw file · declaration index

1/-2Copyright (c) 2026 Asvin G, Claude (Anthropic), GPT-6-Astra (OpenAI). All rights reserved.3Released under Apache 2.0 license as described in the file LICENSE.4Authors: Asvin G, Claude (Anthropic), GPT-6-Astra (OpenAI)5-/6import Mathlib.RingTheory.Etale.StandardEtale7import SurfaceBlowup.Etale.Main8 9/-!10# The étale monic density in algebra language11 12The étale-convention monic density, with the event phrased through algebras: the `K`-algebra13`K[X]/(f_a)` is étale (`Algebra.Etale`) and the `O`-algebra `O[X]/(f_a)` has algebra type `σ`14(`HasAlgebraType`: its generic fibre is a product of fields with the invariants `σ`).15 16## Main results17 18* `SurfaceBlowup.etale_adjoinRoot_of_separable`19* `SurfaceBlowup.etaleMonicDensity_eq_algebraType`20-/21 22open MeasureTheory Polynomial23open scoped ENNReal24 25namespace SurfaceBlowup26 27/-- For a monic separable polynomial `f` over a field `K`, the algebra `K[X]/(f)` is étale. -/28theorem etale_adjoinRoot_of_separable {K : Type} [Field K] (f : K[X]) (hm : f.Monic)29    (hs : f.Separable) : Algebra.Etale K (AdjoinRoot f) := by30  obtain ⟨u, v, huv⟩ := hs31  let P : StandardEtalePair K := ⟨f, hm, 1, ⟨v, u, 0, by rw [pow_zero, ← huv]; ring⟩⟩32  have hu : IsUnit (AdjoinRoot.mk f (1 : K[X])) := by rw [map_one]; exact isUnit_one33  exact Algebra.Etale.of_equiv (P.equivAwayAdjoinRoot.trans34    ((IsLocalization.atUnit (AdjoinRoot f) (Localization.Away (AdjoinRoot.mk f 1)) _35      hu).symm.restrictScalars K))36 37/-- The étale monic density, with the event "the algebra `K[X]/(f_a)` is étale and `O[X]/(f_a)`38has algebra type `σ`". -/39theorem etaleMonicDensity_eq_algebraType (O : Type) [CommRing O] [IsDomain O]Remark 1.340    [IsDiscreteValuationRing O] [IsAdicComplete (IsLocalRing.maximalIdeal O) O]41    [Finite (IsLocalRing.ResidueField O)] [TopologicalSpace O] [IsTopologicalRing O]42    [CompactSpace O] [T2Space O] [SecondCountableTopology O] [MeasurableSpace O] [BorelSpace O]43    (htop : IsAdic (IsLocalRing.maximalIdeal O)) (n : ℕ) (σ : FactorType) :44    etaleMonicDensity O n σ = coefficientMeasure O n45      {a | Algebra.Etale (BaseField O) (AdjoinRoot (monicPolynomial O a)) ∧46        HasAlgebraType O (AdjoinRoot (monicPolyO a)) σ} := by47  refine measure_congr <| (measure_eq_zero_iff_ae_notMem.1 (monic_inseparable_null O htop n)).mono48    fun a ha => ?_49  have hs : (monicPolynomial O a).Separable := not_not.1 ha50  have hm := (monic_poly_reconstruct O n a).151  have ht : HasAlgebraType O (AdjoinRoot (monicPolyO a)) σ ↔52      HasPolynomialType O (monicPolynomial O a) σ := by53    rw [← polynomial_type_iff_algebra_type O _ hm, monicPolyO_map_fraction]54    exact hasPolynomialTypeF_iff_of_separable O hs55  refine propext ⟨fun h => ⟨etale_adjoinRoot_of_separable _56    (monic_polynomial_degree O n a).1 hs, ht.2 h.2⟩, fun h => ⟨hs, ht.1 h.2⟩⟩57 58end SurfaceBlowup