Module

Inertia.lean

Nyll.SchemeTheory.AbhyankarLemma.Geometry.Normalization.Inertia
25 declarations indexed from sourceView source ↗

Inertia in a tower of normalization rings

This file instantiates the ideal-theoretic inertia tower for the integral closures of a Dedekind domain in a finite Galois tower of fields.

Declarations

TameAbhyankar.SGA1.normalizationMap

The canonical map from the normalization in M to the normalization in E, induced by the inclusion M ⊆ E.

Source context 11 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
def normalizationMap :
    integralClosure V M →ₐ[V] integralClosure V E
TameAbhyankar.SGA1.normalizationMap_coe
Source context 12 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
omit [Algebra V K] [IsFractionRing V K] [IsScalarTower V K E]
  [IsScalarTower V K M] in
theorem normalizationMap_coe (x : integralClosure V M) :
    ((normalizationMap (V := V) (K := K) (E := E) M x :
      integralClosure V E) : E) = ((x : M) : E)
TameAbhyankar.SGA1.normalizationLowerPrime

Contraction of a top normalization prime to the normalization in M.

Source context 11 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
def normalizationLowerPrime (Q : Ideal (integralClosure V E)) :
    Ideal (integralClosure V M)
TameAbhyankar.SGA1.normalizationBasePrime

Further contraction of a top normalization prime to the base ring.

Source context 11 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
def normalizationBasePrime (Q : Ideal (integralClosure V E)) : Ideal V
TameAbhyankar.SGA1.normalizationAlgebra
Source context 14 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E)
TameAbhyankar.SGA1.normalizationScalarTower
Source context 15 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E)
TameAbhyankar.SGA1.normalizationLowerPrime_liesOver
Source context 16 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
TameAbhyankar.SGA1.normalizationBasePrime_liesOver
Source context 17 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
TameAbhyankar.SGA1.lowerNormalizationToTopFieldAlgebra
Source context 18 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E
TameAbhyankar.SGA1.lowerNormalizationToFractionFieldTower
Source context 19 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M
TameAbhyankar.SGA1.topNormalizationToFractionFieldTower
Source context 20 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E
TameAbhyankar.SGA1.lowerNormalizationToTopFieldTower
Source context 21 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E
TameAbhyankar.SGA1.baseNormalizationToTopFieldTower
Source context 22 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E
TameAbhyankar.SGA1.normalizationToTopFieldTower
Source context 23 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E
TameAbhyankar.SGA1.topOverLowerNormalization
Source context 24 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E
TameAbhyankar.SGA1.topOverLowerIntegral
Source context 25 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E)
TameAbhyankar.SGA1.normalizationLowerPrime_isMaximal
Source context 26 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal
TameAbhyankar.SGA1.normalizationBasePrime_isMaximal
Source context 27 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal
TameAbhyankar.SGA1.topNormalizationAction
Source context 28 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
local instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change ((normalizationLowerPrime (V := V) (K := K) (E := E) M Q).comap
    (algebraMap V (integralClosure V M))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap V (integralClosure V M)) (fun x ↦ Algebra.IsIntegral.isIntegral x)
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
instance topNormalizationAction :
    MulSemiringAction Gal(E/K) (integralClosure V E)
TameAbhyankar.SGA1.lowerNormalizationAction
Source context 29 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
local instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change ((normalizationLowerPrime (V := V) (K := K) (E := E) M Q).comap
    (algebraMap V (integralClosure V M))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap V (integralClosure V M)) (fun x ↦ Algebra.IsIntegral.isIntegral x)
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
noncomputable local instance topNormalizationAction :
    MulSemiringAction Gal(E/K) (integralClosure V E) :=
  IsIntegralClosure.MulSemiringAction V K E (integralClosure V E)
instance lowerNormalizationAction :
    MulSemiringAction Gal(M/K) (integralClosure V M)
TameAbhyankar.SGA1.normalizationRestrictionHom

Restriction from the top Galois group to the normal intermediate field.

Source context 30 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
local instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change ((normalizationLowerPrime (V := V) (K := K) (E := E) M Q).comap
    (algebraMap V (integralClosure V M))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap V (integralClosure V M)) (fun x ↦ Algebra.IsIntegral.isIntegral x)
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
noncomputable local instance topNormalizationAction :
    MulSemiringAction Gal(E/K) (integralClosure V E) :=
  IsIntegralClosure.MulSemiringAction V K E (integralClosure V E)
noncomputable local instance lowerNormalizationAction :
    MulSemiringAction Gal(M/K) (integralClosure V M) :=
  IsIntegralClosure.MulSemiringAction V K M (integralClosure V M)
def normalizationRestrictionHom : Gal(E/K) →* Gal(M/K)
TameAbhyankar.SGA1.normalizationMap_smul_restriction

The normalization map is equivariant for restriction of Galois automorphisms.

Source context 31 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
local instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change ((normalizationLowerPrime (V := V) (K := K) (E := E) M Q).comap
    (algebraMap V (integralClosure V M))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap V (integralClosure V M)) (fun x ↦ Algebra.IsIntegral.isIntegral x)
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
noncomputable local instance topNormalizationAction :
    MulSemiringAction Gal(E/K) (integralClosure V E) :=
  IsIntegralClosure.MulSemiringAction V K E (integralClosure V E)
noncomputable local instance lowerNormalizationAction :
    MulSemiringAction Gal(M/K) (integralClosure V M) :=
  IsIntegralClosure.MulSemiringAction V K M (integralClosure V M)
omit [IsDedekindDomain V] [FiniteDimensional K E] in
theorem normalizationMap_smul_restriction
    (sigma : Gal(E/K)) (x : integralClosure V M) :
    normalizationMap (V := V) (K := K) (E := E) M
        (normalizationRestrictionHom M sigma • x) =
      sigma • normalizationMap (V := V) (K := K) (E := E) M x
TameAbhyankar.SGA1.normalizationInertiaRestriction

Restriction on the inertia groups attached to a top normalization prime and its contraction to the normalization in M.

Source context 30 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
local instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change ((normalizationLowerPrime (V := V) (K := K) (E := E) M Q).comap
    (algebraMap V (integralClosure V M))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap V (integralClosure V M)) (fun x ↦ Algebra.IsIntegral.isIntegral x)
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
noncomputable local instance topNormalizationAction :
    MulSemiringAction Gal(E/K) (integralClosure V E) :=
  IsIntegralClosure.MulSemiringAction V K E (integralClosure V E)
noncomputable local instance lowerNormalizationAction :
    MulSemiringAction Gal(M/K) (integralClosure V M) :=
  IsIntegralClosure.MulSemiringAction V K M (integralClosure V M)
def normalizationInertiaRestriction
    (Q : Ideal (integralClosure V E)) :
    Q.toAddSubgroup.inertia Gal(E/K) →*
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).toAddSubgroup.inertia
        Gal(M/K)
TameAbhyankar.SGA1.normalizationInertiaRestriction_ker_eq_range_relative

For every top normalization prime, the kernel of inertia restriction is the relative inertia group of E / M.

Source context 31 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
local instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change ((normalizationLowerPrime (V := V) (K := K) (E := E) M Q).comap
    (algebraMap V (integralClosure V M))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap V (integralClosure V M)) (fun x ↦ Algebra.IsIntegral.isIntegral x)
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
noncomputable local instance topNormalizationAction :
    MulSemiringAction Gal(E/K) (integralClosure V E) :=
  IsIntegralClosure.MulSemiringAction V K E (integralClosure V E)
noncomputable local instance lowerNormalizationAction :
    MulSemiringAction Gal(M/K) (integralClosure V M) :=
  IsIntegralClosure.MulSemiringAction V K M (integralClosure V M)
omit [IsDedekindDomain V] [FiniteDimensional K E] in
theorem normalizationInertiaRestriction_ker_eq_range_relative
    (Q : Ideal (integralClosure V E)) :
    MonoidHom.ker (normalizationInertiaRestriction (V := V) M Q) =
      (idealRelativeInertiaInclusion (Q := Q)
        (normalizationRestrictionHom M)).range
TameAbhyankar.SGA1.normalizationInertiaRestriction_surjective

For every maximal prime of the top normalization, restriction on inertia to its contraction in the normalization in M is surjective, provided the two residue-field steps are separable.

Source context 30 commands

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

noncomputable section
universe uV uK uE
namespace TameAbhyankar
namespace SGA1
attribute [local instance] Ideal.Quotient.field Module.Free.of_divisionRing
variable {V : Type uV} {K : Type uK} {E : Type uE}
variable [CommRing V] [Field K] [Field E]
variable [Algebra V K] [IsFractionRing V K]
variable [Algebra K E] [Algebra V E] [IsScalarTower V K E]
variable (M : IntermediateField K E)
variable [Algebra V M] [IsScalarTower V K M] [IsScalarTower V M E]
section GaloisTower
variable [IsDedekindDomain V]
variable [FiniteDimensional K E] [IsGalois K E] [IsGalois K M]
local instance normalizationAlgebra :
    Algebra (integralClosure V M) (integralClosure V E) :=
  (normalizationMap (V := V) (K := K) (E := E) M).toRingHom.toAlgebra
local instance normalizationScalarTower :
    IsScalarTower V (integralClosure V M) (integralClosure V E) := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  apply IsIntegralClosure.algebraMap_injective (integralClosure V E) V E
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationLowerPrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    Q.LiesOver
      (normalizationLowerPrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance normalizationBasePrime_liesOver
    (Q : Ideal (integralClosure V E)) :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).LiesOver
      (normalizationBasePrime (V := V) (K := K) (E := E) M Q) where
  over := rfl
local instance lowerNormalizationToTopFieldAlgebra :
    Algebra (integralClosure V M) E :=
  ((algebraMap M E).comp
    (algebraMap (integralClosure V M) M)).toAlgebra
local instance lowerNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V M) M :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance topNormalizationToFractionFieldTower :
    IsScalarTower V (integralClosure V E) E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance lowerNormalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) M E :=
  IsScalarTower.of_algebraMap_eq' rfl
local instance baseNormalizationToTopFieldTower :
    IsScalarTower V (integralClosure V M) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  change algebraMap V E x = algebraMap M E (algebraMap V M x)
  exact IsScalarTower.algebraMap_apply V M E x
local instance normalizationToTopFieldTower :
    IsScalarTower (integralClosure V M) (integralClosure V E) E := by
  apply IsScalarTower.of_algebraMap_eq
  intro x
  rfl
local instance topOverLowerNormalization :
    IsIntegralClosure (integralClosure V E) (integralClosure V M) E := by
  exact @IsIntegralClosure.tower_top
    V (integralClosure V M) _ _ _ E (integralClosure V E)
    _ _ _ _ _ (baseNormalizationToTopFieldTower (V := V) M) _ _
local instance topOverLowerIntegral :
    Algebra.IsIntegral (integralClosure V M) (integralClosure V E) := by
  exact @IsIntegralClosure.isIntegral_algebra
    (integralClosure V M) (integralClosure V E) E
    _ _ _ _ _ _ _ (normalizationToTopFieldTower (V := V) M)
local instance normalizationLowerPrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change (Q.comap
    (algebraMap (integralClosure V M) (integralClosure V E))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap (integralClosure V M) (integralClosure V E))
    (fun x ↦ Algebra.IsIntegral.isIntegral x) Q
local instance normalizationBasePrime_isMaximal
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal] :
    (normalizationBasePrime (V := V) (K := K) (E := E) M Q).IsMaximal := by
  change ((normalizationLowerPrime (V := V) (K := K) (E := E) M Q).comap
    (algebraMap V (integralClosure V M))).IsMaximal
  exact Ideal.isMaximal_comap_of_isIntegral_of_isMaximal
    (algebraMap V (integralClosure V M)) (fun x ↦ Algebra.IsIntegral.isIntegral x)
    (normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
noncomputable local instance topNormalizationAction :
    MulSemiringAction Gal(E/K) (integralClosure V E) :=
  IsIntegralClosure.MulSemiringAction V K E (integralClosure V E)
noncomputable local instance lowerNormalizationAction :
    MulSemiringAction Gal(M/K) (integralClosure V M) :=
  IsIntegralClosure.MulSemiringAction V K M (integralClosure V M)
theorem normalizationInertiaRestriction_surjective
    (Q : Ideal (integralClosure V E)) [Q.IsMaximal]
    (hV : ¬ IsField V)
    [Algebra.IsSeparable
      (V ⧸ normalizationBasePrime (V := V) (K := K) (E := E) M Q)
      (integralClosure V M ⧸
        normalizationLowerPrime (V := V) (K := K) (E := E) M Q)]
    [Algebra.IsSeparable
      (integralClosure V M ⧸
        normalizationLowerPrime (V := V) (K := K) (E := E) M Q)
      (integralClosure V E ⧸ Q)] :
    Function.Surjective (normalizationInertiaRestriction (V := V) M Q)