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_ringFunction
generic_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.

Warning

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)
source
GenericCharacterTables.paramFunction
param(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
source