One new target root extends all canonical prefix roots to a simultaneous action of the Fin.snoc cover on the same target.
This is the finite-stage consumer for a descended exact-root factor. It is independent of how the last root was produced: a filtered finite-etale stage, a fixed tensor component, or any other source can supply z and hz. Exponent-one prefix stages are retained literally through their canonical distinguished roots.
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open scoped TensorProduct
namespace EtaleFundamentalGroups.Kummer
open Polynomial
open ValuationTheory.DiscreteValuationField
open ValuationTheory.DiscreteValuationField.ValuedExtension
universe uA uK uV uF uL uWtheorem exists_iteratedRadicalTargetAction_of_prefix_and_lastRoot
{A : Type uA} {S : Type uL}
[CommRing A] [IsDomain A]
[CommRing S] [Algebra A S] [FaithfulSMul A S]
{r : ℕ} (n : Fin r → ℕ) (a : Fin r → A)
(hn : ∀ i, 0 < n i)
[Algebra (iteratedRadical A r n a) S]
[IsScalarTower A (iteratedRadical A r n a) S]
(N : ℕ) (hN : 0 < N) (y : A)
(z : S) (hz : z ^ N = algebraMap A S y)
[IsDomain
(iteratedRadical A (r + 1) (Fin.snoc n N) (Fin.snoc a y))] :
let nFull : Fin (r + 1) → ℕ := Fin.snoc n N
let aFull : Fin (r + 1) → A := Fin.snoc a y
∃ (x : Fin (r + 1) → S)
(hx : ∀ i, x i ^ nFull i = algebraMap A S (aFull i)),
Function.Injective
(iteratedRadicalTargetAlgHom nFull aFull x hx) ∧
(∀ i : Fin r,
x i.castSucc =
algebraMap (iteratedRadical A r n a) S
(iteratedRadicalRoot A n a i)) ∧
x (Fin.last r) = z := by
dsimp only
let nFull : Fin (r + 1) → ℕ := Fin.snoc n N
let aFull : Fin (r + 1) → A := Fin.snoc a y
let prefixRoot : Fin r → S := fun i ↦
algebraMap (iteratedRadical A r n a) S
(iteratedRadicalRoot A n a i)
let xFull : Fin (r + 1) → S := Fin.snoc prefixRoot z
have hnFull : ∀ i, 0 < nFull i := by
intro i
refine Fin.lastCases ?_ (fun j ↦ ?_) i
· simpa [nFull] using hN
· simpa [nFull] using hn j
have hxFull : ∀ i,
xFull i ^ nFull i = algebraMap A S (aFull i) := by
intro i
refine Fin.lastCases ?_ (fun j ↦ ?_) i
· simpa [xFull, nFull, aFull] using hz
· simp only [xFull, nFull, aFull, prefixRoot, Fin.snoc_castSucc]
rw [← map_pow, iteratedRadicalRoot_pow]
exact
(IsScalarTower.algebraMap_apply A
(iteratedRadical A r n a) S (a j)).symm
refine ⟨xFull, hxFull, ?_, ?_, ?_⟩
· exact
iteratedRadicalTargetAlgHom_injective
nFull aFull hnFull xFull hxFull
· intro i
simp [xFull, prefixRoot]
· simp [xFull]