Inverting the radicand in the original root algebra gives a finite étale map from the corresponding localization of the original base.
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace EtaleFundamentalGroups.Kummer
open Polynomial AlgebraicGeometry
open scoped TensorProduct
universe utheorem finite_etale_awayMap_adjoinRoot
{A : Type u} [CommRing A] {n : ℕ} (hn : 0 < n)
(hnUnit : IsUnit (n : A)) (f : A) :
let B := AdjoinRoot (X ^ n - C f)
(Localization.awayMap (algebraMap A B) f).Finite ∧
(Localization.awayMap (algebraMap A B) f).Etale := by
intro B
have : Module.Finite A B := (Polynomial.monic_X_pow_sub_C f hn.ne').finite_adjoinRoot
refine ⟨RingHom.localization_away_map_finite A B
(Localization.Away f) (Localization.Away (algebraMap A B f))
(algebraMap A B) f (RingHom.finite_algebraMap.mpr inferInstance), ?_⟩
let Af := Localization.Away f
let Bf := Localization.Away (algebraMap A B f)
let T := Af ⊗[A] B
let D := AdjoinRoot (X ^ n - C (algebraMap A Af f))
let eRoot : T ≃ₐ[Af] D :=
(adjoinRootBaseChangeAlgEquiv (S := Af) (X ^ n - C f)).trans
(AdjoinRoot.algEquivOfEq Af _ _ (by
rw [Polynomial.map_sub, Polynomial.map_pow, Polynomial.map_X, Polynomial.map_C]))
have hformal : Algebra.FormallyEtale Af D :=
formallyEtale_adjoinRoot_X_pow_sub_C hn
(by simpa only [map_natCast] using hnUnit.map (algebraMap A Af))
(IsLocalization.Away.algebraMap_isUnit f)
have : Algebra.Etale Af D := { formallyEtale := hformal }
have : Algebra.Etale Af T := Algebra.Etale.of_equiv eRoot.symm
let : Algebra B T := Algebra.TensorProduct.rightAlgebra
let eAway : T ≃ₐ[B] Bf :=
IsLocalization.Away.tensorRightEquiv (R := A) (S := B) (r := f) (A := Af)
have hmap : eAway.toRingHom.comp (algebraMap Af T) =
Localization.awayMap (algebraMap A B) f := by
apply IsLocalization.ringHom_ext (Submonoid.powers f)
ext a
change eAway (algebraMap A Af a ⊗ₜ[A] (1 : B)) =
Localization.awayMap (algebraMap A B) f (algebraMap A Af a)
rw [Algebra.TensorProduct.tmul_one_eq_one_tmul]
change eAway (algebraMap B T (algebraMap A B a)) = _
rw [eAway.commutes]
change algebraMap B Bf (algebraMap A B a) =
IsLocalization.map Bf (algebraMap A B) _ (algebraMap A Af a)
symm
exact IsLocalization.map_eq _ a
rw [← hmap]
exact RingHom.Etale.respectsIso.1 (algebraMap Af T) eAway.toRingEquiv
(RingHom.etale_algebraMap.mpr inferInstance)