Specializing parameters

Sometimes one likes to specify some of the free variables in the tables to simplify the often very complicated values a bit.

GenericCharacterTables.set_congruenceFunction
set_congruence(x::CharTable, congruence::Tuple{ZZRingElem, ZZRingElem})

Return a new generic character table based on x where the main parameter is additionally assumed to be congruent to congruence[1] modulo congruence[2]. So the entries of x can potentially be simplified further.

source
set_congruence(x::CharTable; remainder::Union{Int, ZZRingElem}, modulus::Union{Int, ZZRingElem})

Return a new generic character table based on x where the main parameter is additionally assumed to be congruent to remainder modulo modulus. So the entries of x can potentially be simplified further. All existing congruences in x will be preserved. This function is usefull for decomposing tensor products.

Examples

julia> g=generic_character_table("GL2")
Generic character table GL2
  of order q^4 - q^3 - q^2 + q
  with 4 irreducible character types
  with 4 class types
  with parameters (i, j, l, k)

julia> set_congruence(g; remainder=0, modulus=2)
Generic character table GL2*
  of order q^4 - q^3 - q^2 + q
  restricted to q congruent to 0 modulo 2
  with 4 irreducible character types
  with 4 class types
  with parameters (i, j, l, k)
source
GenericCharacterTables.specializeFunction
specialize(class::GenericConjugacyClass, var::UPoly, expr::RingElement)

Return the generic conjugacy class where the parameter var is replaced with expr in class.

Examples

julia> g=generic_character_table("GL2");

julia> conjugacy_class_type(g, 1)
Generic conjugacy class of GL2
  with parameters 
    i ∈ {1,…, q - 1}
  of order 1
  with values
    exp(2π𝑖((2*i*k)//(q - 1)))
    q*exp(2π𝑖((2*i*k)//(q - 1)))
    (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))
    (q - 1)*exp(2π𝑖((i*k)//(q - 1)))

julia> q,(i,j,l,k) = parameters(g);

julia> specialize(conjugacy_class_type(g, 1), i, q)
Generic conjugacy class of GL2
  with parameters 
    i ∈ {1,…, q - 1}, substitutions: i = q
  of order 1
  with values
    exp(2π𝑖((2*k)//(q - 1)))
    q*exp(2π𝑖((2*k)//(q - 1)))
    (q + 1)*exp(2π𝑖((l + k)//(q - 1)))
    (q - 1)*exp(2π𝑖(k//(q - 1)))
source
specialize(char::GenericCharacter, var::UPoly, expr::RingElement)

Return the generic character where the parameter var is replaced with expr in char.

Examples

julia> g=generic_character_table("GL2");

julia> g[1]
Generic character of GL2
  with parameters
    k ∈ {1,…, q - 1}
  of degree 1
  with values
    exp(2π𝑖((2*i*k)//(q - 1)))
    exp(2π𝑖((2*i*k)//(q - 1)))
    exp(2π𝑖((i*k + j*k)//(q - 1)))
    exp(2π𝑖((i*k)//(q - 1)))

julia> q,(i,j,l,k) = parameters(g);

julia> specialize(g[1], i, q)
Generic character of GL2
  with parameters
    k ∈ {1,…, q - 1}, substitutions: i = q
  of degree 1
  with values
    exp(2π𝑖((2*k)//(q - 1)))
    exp(2π𝑖((2*k)//(q - 1)))
    exp(2π𝑖((j*k + k)//(q - 1)))
    exp(2π𝑖(k//(q - 1)))
source