Roots of unity #
We define roots of unity in the context of an arbitrary commutative monoid, as a subgroup of the group of units.
Main definitions #
rootsOfUnity n M, forn : ℕis the subgroup of the units of a commutative monoidMconsisting of elementsxthat satisfyx ^ n = 1.
Main results #
rootsOfUnity.isCyclic: the roots of unity in an integral domain form a cyclic group.
Implementation details #
It is desirable that rootsOfUnity is a subgroup,
and it will mainly be applied to rings (e.g. the ring of integers in a number field) and fields.
We therefore implement it as a subgroup of the units of a commutative monoid.
We have chosen to define rootsOfUnity n for n : ℕ and add a [NeZero n] typeclass
assumption when we need n to be non-zero (which is the case for most interesting statements).
Note that rootsOfUnity 0 M is the top subgroup of Mˣ (as the condition ζ^0 = 1 is
satisfied for all units).
A variant of mem_rootsOfUnity using ζ : Mˣ.
Make an element of rootsOfUnity from a member of the base ring, and a proof that it has
a positive power equal to one.
Equations
- rootsOfUnity.mkOfPowEq ζ h = ⟨Units.ofPowEqOne ζ n h ⋯, ⋯⟩
Instances For
The canonical isomorphism from the nth roots of unity in Mˣ
to the nth roots of unity in M.
Equations
- rootsOfUnityUnitsMulEquiv M n = { toFun := fun (ζ : ↥(rootsOfUnity n Mˣ)) => ⟨↑↑ζ, ⋯⟩, invFun := fun (ζ : ↥(rootsOfUnity n M)) => ⟨toUnits ↑ζ, ⋯⟩, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯ }
Instances For
Restrict a ring homomorphism to the nth roots of unity.
Equations
- restrictRootsOfUnity σ n = { toFun := fun (ξ : ↥(rootsOfUnity n R)) => ⟨(Units.map ↑σ) ↑ξ, ⋯⟩, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Restrict a monoid isomorphism to the nth roots of unity.
Equations
- σ.restrictRootsOfUnity n = { toFun := ⇑(restrictRootsOfUnity σ n), invFun := ⇑(restrictRootsOfUnity σ.symm n), left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯ }
Instances For
Equivalence between the k-th roots of unity in R and the k-th roots of 1.
This is implemented as equivalence of subtypes,
because rootsOfUnity is a subgroup of the group of units,
whereas nthRoots is a multiset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- rootsOfUnity.fintype R k = Fintype.ofEquiv { x : R // x ∈ Polynomial.nthRoots k 1 } (rootsOfUnityEquivNthRoots R k).symm
The isomorphism from the group of group homomorphisms from a finite cyclic group G of order
n into another group G' to the group of nth roots of unity in G' determined by a generator
g of G. It sends φ : G →* G' to φ g.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The group of group homomorphisms from a finite cyclic group G of order n into another
group G' is (noncanonically) isomorphic to the group of nth roots of unity in G'.