Generic cyclotomics
Generic cyclotomic numbers are expressions of the form $p_1\operatorname{e}^{\operatorname{i}2 \pi \frac{f_1}{g_1}} + \ldots + p_r\operatorname{e}^{\operatorname{i}2 \pi \frac{f_r}{g_r}}$ where $p_1,\ldots,p_r,g_1,\ldots,g_r \in \mathbb{Q}[q]$ and $f_1, \ldots, f_r \in \mathbb{Q}[q,x_1,\ldots,x_k]$. These describe the entries of generic character tables. Two generic cyclotomics are defined to be equal if their evaluations coincide for every tuple of integers. Where evaluation just means replacing the free variables by actual values which yields a cyclotomic number. Usually the first component of the tuples is restricted to the prime powers, sometimes just to the even prime powers or something similar. This depends on the specific character table. Of course only evaluations where the $g_1,\ldots,g_r$ are not zeros are considered.
These numbers form a ring which will be called generic cyclotomic ring. Currently, only very basic operations are supported. Basically just the normal ring operations and evaluation. Things like inversion or division still lack the necessary mathematical theory.
GenericCharacterTables.generic_cyclotomic_ring
— Functiongeneric_cyclotomic_ring(symbol::Symbol=:E; congruence::Union{Tuple{ZZRingElem,ZZRingElem},Nothing}=nothing, variable::Symbol=:q, power::Int64=1, cached::Bool=true)
Return a tuple consisting of the generic cyclotomic ring S
with the main variable variable
, a generic root generator E
and the parameter q
corresponding to the symbol variable
. The symbol symbol
is used as a compact placeholder for $e^{2 \pi i}$ for printing. In the simplification process of the elements of S
it is assumed that q
to the power of power
always represents a whole number cungruent to congruence[1]
modulo congruence[2]
.
Currently the optional argument cached
is ignored.
In the exponents of the generic cyclotomic numbers q
may only occur in powers which are a multiple of power
. Otherwise the simplification may return incorrect results.
Examples
julia> S, E, q = generic_cyclotomic_ring()
(Generic cyclotomic ring over Rational field, Generator of Generic cyclotomic ring over Rational field, q)
julia> E(q-1)^(q-1)
1
julia> E(3)^2
-E(3) - 1
julia> S, E, q = generic_cyclotomic_ring(congruence=(ZZ(1),ZZ(3)), power=2)
(Generic cyclotomic ring over Rational field, Generator of Generic cyclotomic ring over Rational field, q)
julia> S
Generic cyclotomic ring
over Rational field
dependent on q
where q^2 is congruent to 1 modulo 3
julia> E(3)^(q^2-1)
1
julia> E(3)^(q^2)
E(3)
GenericCharacterTables.param
— Functionparam(S::GenericCycloRing, var::Symbol)
Return the parameter of S
corresponding to the symbol var
. If there is no such paramter it creates a new one.
Examples
julia> S, E, q = generic_cyclotomic_ring()
(Generic cyclotomic ring over Rational field, Generator of Generic cyclotomic ring over Rational field, q)
julia> param(S, :q)
q
julia> param(S, :i)
i