The normalization of the original final component is canonically the normalization of its selected second-stage component. The source is indexed by the literal input ideal m, not by a separately assumed comparison ideal.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open scoped TensorProduct
namespace EtaleFundamentalGroups.Kummer
universe uB uK uF uF' uL
variable {B : Type uB}
variable {K : Type uK} {F : Type uF} {F' : Type uF'} {L : Type uL}
variable [CommRing B]
variable [Field K] [Field F] [Field F'] [Field L]
variable [Algebra K F] [Algebra F F'] [Algebra K F']
variable [IsScalarTower K F F'] [Algebra K L]
variable [Algebra B F']def
genericTensorTowerFinalComponentIntegralClosureAlgEquiv
[FiniteDimensional F F']
(m : Ideal (F' ⊗[K] L)) [m.IsMaximal] :
let n := genericTensorTowerIntermediateIdeal
(K := K) (F := F) (F' := F') (L := L) m
letI : n.IsMaximal :=
genericTensorTowerIntermediateIdeal_isMaximal
(K := K) (F := F) (F' := F') (L := L) m
let q := genericTensorTowerSecondIdeal
(K := K) (F := F) (F' := F') (L := L) m
letI : q.IsMaximal :=
genericTensorTowerSecondIdeal_isMaximal
(K := K) (F := F) (F' := F') (L := L) m
let Pm := GenericTensorFieldComponent m
let Pq := GenericTensorFieldComponent q
letI : Algebra B Pm :=
genericTensorFieldComponentLeftScalarAlgebra (R := B) m
letI : Algebra B Pq :=
genericTensorFieldComponentLeftScalarAlgebra (R := B) q
integralClosure B Pm ≃ₐ[B] integralClosure B Pq := by
dsimp only
let n := genericTensorTowerIntermediateIdeal
(K := K) (F := F) (F' := F') (L := L) m
letI : n.IsMaximal :=
genericTensorTowerIntermediateIdeal_isMaximal
(K := K) (F := F) (F' := F') (L := L) m
let q := genericTensorTowerSecondIdeal
(K := K) (F := F) (F' := F') (L := L) m
letI : q.IsMaximal :=
genericTensorTowerSecondIdeal_isMaximal
(K := K) (F := F) (F' := F') (L := L) m
have hrefine :
genericTensorRefineChosenComponentIdeal
(K₀ := K) (K₁ := F) (F := F') (L := L) n q = m :=
genericTensorRefineChosenComponentIdeal_tower_second
(K₀ := K) (K₁ := F) (F := F') (L := L) m
let r := genericTensorRefineChosenComponentIdeal
(K₀ := K) (K₁ := F) (F := F') (L := L) n q
letI : r.IsMaximal :=
genericTensorRefineChosenComponentIdeal_isMaximal
(K₀ := K) (K₁ := F) (F := F') (L := L) n q
letI : Algebra B (GenericTensorFieldComponent m) :=
genericTensorFieldComponentLeftScalarAlgebra (R := B) m
letI : Algebra B (GenericTensorFieldComponent r) :=
genericTensorFieldComponentLeftScalarAlgebra (R := B) r
letI : Algebra B (GenericTensorFieldComponent q) :=
genericTensorFieldComponentLeftScalarAlgebra (R := B) q
let eIdealF : GenericTensorFieldComponent m ≃ₐ[F']
GenericTensorFieldComponent r :=
Ideal.quotientEquivAlgOfEq F' hrefine.symm
let eIdealB : GenericTensorFieldComponent m ≃ₐ[B]
GenericTensorFieldComponent r :=
{ toRingEquiv := eIdealF.toRingEquiv
commutes' := by
intro b
change eIdealF
(algebraMap F' (GenericTensorFieldComponent m)
(algebraMap B F' b)) =
algebraMap F' (GenericTensorFieldComponent r)
(algebraMap B F' b)
exact eIdealF.commutes (algebraMap B F' b) }
exact eIdealB.mapIntegralClosure.trans
(genericTensorRefineChosenComponentIntegralClosureAlgEquiv
(B := B) (K₀ := K) (K₁ := F) (F := F') (L := L) n q)