Documentation

Mathlib.RingTheory.RootsOfUnity.EnoughRootsOfUnity

Commutative monoids with enough roots of unity #

We define a typeclass HasEnoughRootsOfUnity M n for a commutative monoid M and a natural number n that asserts that M contains a primitive nth root of unity and that the group of nth roots of unity in M is cyclic. Such monoids are suitable targets for homomorphisms from groups of exponent (dividing) n; for example, the homomorphisms can then be used to separate elements of the source group.

class HasEnoughRootsOfUnity (M : Type u_1) [CommMonoid M] (n : ) :

This is a type class recording that a commutative monoid M contains primitive nth roots of unity and such that the group of nth roots of unity is cyclic.

Such monoids are suitable targets in the context of duality statements for groups of exponent n.

Instances
    theorem HasEnoughRootsOfUnity.prim {M : Type u_1} :
    ∀ {inst : CommMonoid M} {n : } [self : HasEnoughRootsOfUnity M n], ∃ (m : M), IsPrimitiveRoot m n
    theorem HasEnoughRootsOfUnity.cyc {M : Type u_1} :
    ∀ {inst : CommMonoid M} {n : } [self : HasEnoughRootsOfUnity M n], IsCyclic (rootsOfUnity n M)
    theorem HasEnoughRootsOfUnity.of_dvd (M : Type u_1) [CommMonoid M] {m : } {n : } [NeZero n] (hmn : m n) [HasEnoughRootsOfUnity M n] :

    If HasEnoughRootsOfUnity M n and m ∣ n, then also HasEnoughRootsOfUnity M m.

    If M satisfies HasEnoughRootsOfUnity, then the group of nth roots of unity in M is finite.

    Equations
    • =

    If M satisfies HasEnoughRootsOfUnity, then the group of nth roots of unity in M (is cyclic and) has order n.