ModuleIsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.lean
Nyll.AlgebraicCurves.Valuations.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
28 declarations indexed from sourceView source ↗ Module documentation
Is Discrete Valuation Ring primes Over integral Closure eq range of finrank le sum inertia
Deg
Imports94
- Mathlib.Algebra.Algebra.Basic
- Mathlib.Algebra.Algebra.Defs
- Mathlib.Algebra.Algebra.Tower
- Mathlib.Algebra.BigOperators.Group.Finset.Basic
- Mathlib.Algebra.BigOperators.Group.Finset.Defs
- Mathlib.Algebra.BigOperators.Group.Multiset.Defs
- Mathlib.Algebra.Field.Defs
- Mathlib.Algebra.Group.Action.Defs
- Mathlib.Algebra.Group.Action.Faithful
- Mathlib.Algebra.Group.Hom.Defs
- Mathlib.Algebra.Group.Irreducible.Defs
- Mathlib.Algebra.Group.Submonoid.BigOperators
- Mathlib.Algebra.Group.Units.Defs
- Mathlib.Algebra.Group.Units.Hom
- Mathlib.Algebra.GroupWithZero.Associated
- Mathlib.Algebra.GroupWithZero.Basic
- Mathlib.Algebra.GroupWithZero.Defs
- Mathlib.Algebra.GroupWithZero.NonZeroDivisors
- Mathlib.Algebra.GroupWithZero.Units.Basic
- Mathlib.Algebra.Order.BigOperators.Group.Finset
- Mathlib.Algebra.Polynomial.Eval.Coeff
- Mathlib.Algebra.Polynomial.Eval.Defs
- Mathlib.Algebra.Polynomial.Monic
- Mathlib.Algebra.Prime.Defs
- Mathlib.Algebra.Ring.Defs
- Mathlib.Algebra.Ring.Hom.Defs
- Mathlib.Algebra.Ring.Subring.Basic
- Mathlib.Algebra.Ring.Subsemiring.Basic
- Mathlib.Data.Finset.Dedup
- Mathlib.Data.Finset.Defs
- Mathlib.Data.Finset.Erase
- Mathlib.Data.Finset.Image
- Mathlib.Data.Finset.Insert
- Mathlib.Data.Fintype.Card
- Mathlib.Data.Fintype.Defs
- Mathlib.Data.Multiset.Count
- Mathlib.Data.Multiset.Dedup
- Mathlib.Data.Multiset.MapFold
- Mathlib.Data.Multiset.Replicate
- Mathlib.Data.Set.Basic
- Mathlib.Data.Set.Image
- Mathlib.FieldTheory.Separable
- Mathlib.LinearAlgebra.Dimension.Finite
- Mathlib.LinearAlgebra.Dimension.Finrank
- Mathlib.LinearAlgebra.Dimension.Localization
- Mathlib.LinearAlgebra.FiniteDimensional.Defs
- Mathlib.LinearAlgebra.InvariantBasisNumber
- Mathlib.LinearAlgebra.LinearIndependent.Defs
- Mathlib.NumberTheory.RamificationInertia.Ramification
- Mathlib.RingTheory.DedekindDomain.AdicValuation
- Mathlib.RingTheory.DedekindDomain.Basic
- Mathlib.RingTheory.DedekindDomain.Ideal.Lemmas
- Mathlib.RingTheory.DedekindDomain.IntegralClosure
- Mathlib.RingTheory.DiscreteValuationRing.Basic
- Mathlib.RingTheory.FiniteType
- Mathlib.RingTheory.Finiteness.Defs
- Mathlib.RingTheory.Finiteness.Quotient
- Mathlib.RingTheory.Flat.TorsionFree
- Mathlib.RingTheory.Ideal.Defs
- Mathlib.RingTheory.Ideal.GoingUp
- Mathlib.RingTheory.Ideal.Lattice
- Mathlib.RingTheory.Ideal.Maps
- Mathlib.RingTheory.Ideal.Maximal
- Mathlib.RingTheory.Ideal.Nonunits
- Mathlib.RingTheory.Ideal.Operations
- Mathlib.RingTheory.Ideal.Over
- Mathlib.RingTheory.Ideal.Prime
- Mathlib.RingTheory.Ideal.Quotient.Basic
- Mathlib.RingTheory.Ideal.Quotient.Defs
- Mathlib.RingTheory.Ideal.Quotient.Operations
- Mathlib.RingTheory.Ideal.Span
- Mathlib.RingTheory.IntegralClosure.Algebra.Basic
- Mathlib.RingTheory.IntegralClosure.IntegrallyClosed
- Mathlib.RingTheory.IntegralClosure.IsIntegral.Defs
- Mathlib.RingTheory.IntegralClosure.IsIntegralClosure.Basic
- Mathlib.RingTheory.LocalRing.MaximalIdeal.Basic
- Mathlib.RingTheory.Localization.AtPrime.Basic
- Mathlib.RingTheory.Localization.Defs
- Mathlib.RingTheory.Localization.FractionRing
- Mathlib.RingTheory.Localization.Integral
- Mathlib.RingTheory.Localization.LocalizationLocalization
- Mathlib.RingTheory.PrincipalIdealDomain
- Mathlib.RingTheory.RamificationInertia.Basic
- Mathlib.RingTheory.RamificationInertia.Inertia
- Mathlib.RingTheory.RamificationInertia.Ramification
- Mathlib.RingTheory.UniqueFactorizationDomain.Defs
- Mathlib.RingTheory.Valuation.LocalSubring
- Mathlib.RingTheory.Valuation.ValuationRing
- Mathlib.RingTheory.Valuation.ValuationSubring
- Mathlib.Tactic.Choose
- Mathlib.Tactic.FieldSimp
- Mathlib.Tactic.NormNum.Basic
- Mathlib.Tactic.NormNum.Core
- Mathlib.Tactic.NormNum.Ineq
Imported by2
Declarations
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.mem_of_isIntegral
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Setup
variable {O : Type*} [CommRing O] [IsDomain O]
{F : Type*} [Field F] [Algebra O F]
omit [IsDomain O] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.toV
DocumentationThe inclusion of the integral closure into the valuation ring containing its elements.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Setup
variable {O : Type*} [CommRing O] [IsDomain O]
{F : Type*} [Field F] [Algebra O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.coe_toV
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Setup
variable {O : Type*} [CommRing O] [IsDomain O]
{F : Type*} [Field F] [Algebra O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
omit [IsDomain O] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.centre
DocumentationThe center of the valuation on the integral closure.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Setup
variable {O : Type*} [CommRing O] [IsDomain O]
{F : Type*} [Field F] [Algebra O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.isPrime_centre
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Setup
variable {O : Type*} [CommRing O] [IsDomain O]
{F : Type*} [Field F] [Algebra O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.mem_centre_iff
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Setup
variable {O : Type*} [CommRing O] [IsDomain O]
{F : Type*} [Field F] [Algebra O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
omit [IsDomain O] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.instances_B
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
omit [FaithfulSMul O F] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.faithfulSMul_B
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.comap_centre
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
include hdom in
omit [FaithfulSMul O F] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.liesOver_centre
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
include hdom in
omit [FaithfulSMul O F] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.centre_ne_bot
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
include hdom in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.card_le_inertiaDeg
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
include hdom in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.primesOverFinset_eq_and_ramificationIdx_eq
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
include hdom in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.centreHOS
DocumentationThe height-one prime associated with a nonzero center on the integral closure.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.valuationSubringAtPrime_le
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
omit [IsDomain O] [IsDiscreteValuationRing O] [FaithfulSMul O F] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.eq_valuationSubringAtPrime
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
omit [IsDomain O] [IsDiscreteValuationRing O] [FaithfulSMul O F] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.centre_eq_map
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
include hdom in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.valuationSubring_unique_of_residues_linearIndependent
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
omit V hOV hdom in
omit [FaithfulSMul O F] in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.exists_valuationSubring_mem_iff_presentation
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
section Main
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
variable (V : ValuationSubring F) (hOV : ∀ x : O, algebraMap O F x ∈ V)
(hdom : ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ V.nonunits)
omit V hOV hdom in
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Several.centre_injective
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Several
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Several.primesOverFinset_eq_image
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Several
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
Lean source · full declarationtheorem primesOverFinset_eq_image
(E : Type*) [Field E] [Algebra O E] [IsFractionRing O E] [Algebra E F]
[IsScalarTower O E F] [FiniteDimensional E F] [Algebra.IsSeparable E F]
[IsDedekindDomain ↥(integralClosure O F)] [Module.Finite O ↥(integralClosure O F)]
[IsFractionRing ↥(integralClosure O F) F]
{ι : Type*} [Fintype ι] (V : ι → ValuationSubring F) (hV : ∀ i, V i ≠ ⊤)
(hOV : ∀ i, ∀ x : O, algebraMap O F x ∈ V i)
(hdom : ∀ i, ∀ x ∈ maximalIdeal O, algebraMap O F x ∈ (V i).nonunits)
(hinj : Function.Injective V)
(d : ι → ℕ) (hd : ∀ i, d i ≤ (centre (V i) (hOV i)).inertiaDeg O)
(hsum : Module.finrank E F ≤ ∑ i, d i) :
IsDedekindDomain.primesOverFinset (maximalIdeal O) ↥(integralClosure O F) = Finset.univ.image
(fun i => centre (V i) (hOV i)) ∧
(∀ i, Ideal.ramificationIdx' (maximalIdeal O) (centre (V i) (hOV i)) = 1) ∧
(∀ i, (centre (V i) (hOV i)).inertiaDeg O = d i) ∧
∑ i, d i = Module.finrank E F := by
classical
have hp0 : maximalIdeal O ≠ ⊥ := IsDiscreteValuationRing.not_a_field O
have hsumEF :
∑ P ∈ IsDedekindDomain.primesOverFinset (maximalIdeal O) ↥(integralClosure O F),
(maximalIdeal O).ramificationIdx' P * P.inertiaDeg O =
Module.finrank E F := by
calc
_ = ∑ P : (maximalIdeal O).primesOver ↥(integralClosure O F),
P.1.ramificationIdx O * P.1.inertiaDeg O := by
refine Finset.sum_bij
(fun P hP => (⟨P, (IsDedekindDomain.mem_primesOverFinset_iff hp0
↥(integralClosure O F)).mp hP⟩ :
(maximalIdeal O).primesOver ↥(integralClosure O F))) ?_ ?_ ?_ ?_
· intro _ _
exact Finset.mem_univ _
· intro _ _ _ _ hEq
exact congrArg Subtype.val hEq
· intro ⟨P, hP⟩ _
exact ⟨P, (IsDedekindDomain.mem_primesOverFinset_iff hp0
↥(integralClosure O F)).mpr hP, rfl⟩
· intro P hP
obtain ⟨hPprime, hPover⟩ :=
(IsDedekindDomain.mem_primesOverFinset_iff hp0 ↥(integralClosure O F)).mp hP
let : P.IsPrime := hPprime
let : P.LiesOver (maximalIdeal O) := hPover
rw [Ideal.ramificationIdx'_eq_ramificationIdx _ _ hp0]
_ = Module.finrank O ↥(integralClosure O F) :=
Ideal.sum_ramification_inertia_eq_finrank (maximalIdeal O) ↥(integralClosure O F)
_ = Module.finrank E F :=
(IsFractionRing.finrank_eq O E ↥(integralClosure O F) F).symm
set s := IsDedekindDomain.primesOverFinset (maximalIdeal O) ↥(integralClosure O F) with hs
set 𝔓 : ι → Ideal ↥(integralClosure O F) := fun i => centre (V i) (hOV i) with h𝔓
set I := Finset.univ.image 𝔓 with hI
have h𝔓inj : Function.Injective 𝔓 := centre_injective V hV hOV hdom hinj
have hmem : ∀ i, 𝔓 i ∈ s := fun i => by
have := liesOver_centre (V i) (hOV i) (hdom i)
exact (IsDedekindDomain.mem_primesOverFinset_iff hp0 _).mpr ⟨inferInstance, inferInstance⟩
have hIs : I ⊆ s := by
intro P hP
obtain ⟨i, -, rfl⟩ := Finset.mem_image.mp hP
exact hmem i
set t : Ideal ↥(integralClosure O F) → ℕ :=
fun P => Ideal.ramificationIdx' (maximalIdeal O) P * P.inertiaDeg O with ht
have hpos : ∀ P ∈ s, 1 ≤ t P := by
intro P hP
have hP' := (IsDedekindDomain.mem_primesOverFinset_iff hp0 _).mp hP
have : P.IsPrime := hP'.1
have : P.LiesOver (maximalIdeal O) := hP'.2
have he : Ideal.ramificationIdx' (maximalIdeal O) P ≠ 0 :=
Ideal.IsDedekindDomain.ramificationIdx'_ne_zero_of_liesOver P hp0
have hf : P.inertiaDeg O ≠ 0 := (Ideal.inertiaDeg_pos P O).ne'
exact Nat.one_le_iff_ne_zero.mpr (mul_ne_zero he hf)
have he1 : ∀ i, 1 ≤ Ideal.ramificationIdx' (maximalIdeal O) (𝔓 i) := by
intro i
have := liesOver_centre (V i) (hOV i) (hdom i)
exact Nat.one_le_iff_ne_zero.mpr (Ideal.IsDedekindDomain.ramificationIdx'_ne_zero_of_liesOver
(𝔓 i) hp0)
have h1 : ∑ P ∈ I, t P ≤ ∑ P ∈ s, t P := Finset.sum_le_sum_of_subset_of_nonneg hIs (fun P _ _ =>
Nat.zero_le _)
have h2 : ∑ P ∈ I, t P = ∑ i, t (𝔓 i) := by
rw [hI, Finset.sum_image (fun i _ j _ h => h𝔓inj h)]
have h3 : ∀ i, (𝔓 i).inertiaDeg O ≤ t (𝔓 i) := fun i =>
Nat.le_mul_of_pos_left _ (he1 i)
have h4 : ∑ i, d i ≤ ∑ i, (𝔓 i).inertiaDeg O := Finset.sum_le_sum (fun i _ => hd i)
have h5 : ∑ i, (𝔓 i).inertiaDeg O ≤ ∑ i, t (𝔓 i) := Finset.sum_le_sum (fun i _ => h3 i)
have hsumEF' : ∑ P ∈ s, t P = Module.finrank E F := hsumEF
have hchain : ∑ P ∈ s, t P ≤ ∑ i, d i := hsumEF' ▸ hsum
have hEq1 : ∑ P ∈ I, t P = ∑ P ∈ s, t P := by omega
have hEq2 : ∑ i, (𝔓 i).inertiaDeg O = ∑ i, t (𝔓 i) := by omega
have hEq3 : ∑ i, d i = ∑ i, (𝔓 i).inertiaDeg O := by omega
have hsI : s = I := by
refine (Finset.Subset.antisymm ?_ hIs)
intro P hP
by_contra hPI
have hlt : ∑ Q ∈ I, t Q < ∑ Q ∈ s, t Q :=
Finset.sum_lt_sum_of_subset hIs hP hPI (hpos P hP) (fun Q _ _ => Nat.zero_le _)
omega
have hterm : ∀ i ∈ Finset.univ, (𝔓 i).inertiaDeg O = t (𝔓 i) :=
(Finset.sum_eq_sum_iff_of_le (fun i _ => h3 i)).mp hEq2
have hterm' : ∀ i ∈ Finset.univ, d i = (𝔓 i).inertiaDeg O :=
(Finset.sum_eq_sum_iff_of_le (fun i _ => hd i)).mp hEq3
refine ⟨hsI, fun i => ?_, fun i => (hterm' i (Finset.mem_univ i)).symm, by omega⟩
have hfpos : 0 < (𝔓 i).inertiaDeg O := by
have := liesOver_centre (V i) (hOV i) (hdom i)
exact Ideal.inertiaDeg_pos _ _
have := hterm i (Finset.mem_univ i)
rw [ht] at this
exact (Nat.eq_of_mul_eq_mul_right hfpos (by rw [one_mul]; exact this.symm))
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Several.map_eq_prod_centre
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Several
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Several.valuationSubring_mem_of_inertiaDeg_le
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Several
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Several.valuationSubring_mem_of_residues_linearIndependent_family
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Several
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Primes.mem_valuationSubringAtPrime_iff
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Primes
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Primes.valuationSubringAtPrime_data
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Primes
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
AlgebraicCurves.Valuations.Proofs.IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg.AlgVert.Primes.of_primes
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
namespace AlgVert
open IsLocalRing IsDedekindDomain
namespace Primes
open IsLocalRing IsDedekindDomain
variable {O : Type*} [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
{F : Type*} [Field F] [Algebra O F] [FaithfulSMul O F]
IsDiscreteValuationRing.primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg
Source context 3 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Valuations.Proofs
namespace IsDiscreteValuationRing_primesOver_integralClosure_eq_range_of_finrank_le_sum_inertiaDeg