English
The Galois group of a cyclotomic extension is isomorphic to the unit group of Z/nZ; this is formalized as a MulEquiv between the Galois group and Units(ZMod n).
Русский
Галуа-группа циклотомического расширения изотрично единицам в Z/nZ; формализуется как мультиобразование между Гал(циклотомическое) и Units(ZMod n).
LaTeX
$$$(\text{cyclotomic } n K)\,\text{Gal} \cong (\mathbb{Z}/n\mathbb{Z})^{\times}$$$
Lean4
/-- The `MulEquiv` that takes an automorphism `f` to the element `k : (ZMod n)ˣ` such that
`f μ = μ ^ k` for any root of unity `μ`. A strengthening of `IsPrimitiveRoot.autToPow`. -/
@[simps]
noncomputable def autEquivPow (h : Irreducible (cyclotomic n K)) : (L ≃ₐ[K] L) ≃* (ZMod n)ˣ :=
let hζ := zeta_spec n K L
let hμ t := hζ.pow_of_coprime _ (ZMod.val_coe_unit_coprime t)
{
(zeta_spec n K L).autToPow
K with
invFun := fun t =>
(hζ.powerBasis K).equivOfMinpoly ((hμ t).powerBasis K)
(by
haveI := IsCyclotomicExtension.neZero' n K L
simp only [IsPrimitiveRoot.powerBasis_gen]
have hr :=
IsPrimitiveRoot.minpoly_eq_cyclotomic_of_irreducible
((zeta_spec n K L).pow_of_coprime _ (ZMod.val_coe_unit_coprime t)) h
exact ((zeta_spec n K L).minpoly_eq_cyclotomic_of_irreducible h).symm.trans hr)
left_inv := fun f => by
simp only [MonoidHom.toFun_eq_coe]
apply AlgEquiv.coe_algHom_injective
apply (hζ.powerBasis K).algHom_ext
simp only [AlgHom.coe_coe]
rw [PowerBasis.equivOfMinpoly_gen]
simp only [IsPrimitiveRoot.powerBasis_gen, IsPrimitiveRoot.autToPow_spec]
right_inv := fun x => by
simp only [MonoidHom.toFun_eq_coe]
generalize_proofs _ h
have key := hζ.autToPow_spec K ((hζ.powerBasis K).equivOfMinpoly ((hμ x).powerBasis K) h)
have := (hζ.powerBasis K).equivOfMinpoly_gen ((hμ x).powerBasis K) h
rw [hζ.powerBasis_gen K] at this
rw [this, IsPrimitiveRoot.powerBasis_gen] at key
nth_rw 1 5 [← hζ.val_toRootsOfUnity_coe] at key
simp only [← rootsOfUnity.coe_pow] at key
replace key := rootsOfUnity.coe_injective key
rw [pow_eq_pow_iff_modEq, ← Subgroup.orderOf_coe, ← orderOf_units, hζ.val_toRootsOfUnity_coe, ←
(zeta_spec n K L).eq_orderOf, ← ZMod.natCast_eq_natCast_iff] at key
simp only [ZMod.natCast_val, ZMod.cast_id', id] at key
exact Units.ext key }