diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 9f69d2b6..ecaef3af 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2024-10-08T17:53:41","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2024-10-11T08:36:29","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/dev/book/index.html b/dev/book/index.html index ce817f22..96143658 100644 --- a/dev/book/index.html +++ b/dev/book/index.html @@ -72,4 +72,4 @@ 3*n1 ∈ (q - 1)ℤ 2*n1 ∈ (q - 1)ℤ

The exceptions both cannot occur as $q$ is even and the table we are considering is only defined for $q\not\equiv 1\pmod 3$. By working through the other possible exceptions and irreducible character types, and handling duplicates, one finally obtains

\[\chi_2^2 = \chi_1+2\chi_2+2\chi_3 +\frac12\sum_{n=1}^{q-2} \chi_6(n,q-1-n) - +\frac12\sum_{n=1}^{q} \chi_7(n(q-1)).\]

Where $\chi_6(n,q-1-n)$ indicates that the $6$th character in the table T2 is a family on two parameters: $n$ and $q-1-n$, while $\chi_7$ depends on only one, namely $n(q-1)$. A similar result can be obtained for odd $q$ albeit with a few more cases that need to be dealt with, but all in essentially the same manner.

+ +\frac12\sum_{n=1}^{q} \chi_7(n(q-1)).\]

Where $\chi_6(n,q-1-n)$ indicates that the $6$th character in the table T2 is a family on two parameters: $n$ and $q-1-n$, while $\chi_7$ depends on only one, namely $n(q-1)$. A similar result can be obtained for odd $q$ albeit with a few more cases that need to be dealt with, but all in essentially the same manner.

diff --git a/dev/characters/index.html b/dev/characters/index.html index 2c1fb135..4063f7e8 100644 --- a/dev/characters/index.html +++ b/dev/characters/index.html @@ -3,24 +3,24 @@ julia> number_of_character_types(g) 4 -source
GenericCharacterTables.number_of_charactersMethod
number_of_characters(char::GenericCharacter)

Return the number of characters in the generic character char.

Examples

julia> g=generic_character_table("GL2");
+
source
GenericCharacterTables.number_of_charactersMethod
number_of_characters(char::GenericCharacter)

Return the number of characters in the generic character char.

Examples

julia> g=generic_character_table("GL2");
 
 julia> number_of_characters(g[1])
 q - 1
-
source
AbstractAlgebra.degreeMethod
degree(char::AbstractGenericCharacter)

Return the character degree of the characters in char.

Examples

julia> g=generic_character_table("GL2");
+
source
AbstractAlgebra.degreeMethod
degree(char::AbstractGenericCharacter)

Return the character degree of the characters in char.

Examples

julia> g=generic_character_table("GL2");
 
 julia> degree(g[3])
 q + 1
-
source
GenericCharacterTables.parametersMethod
parameters(char::AbstractGenericCharacter)

Return the parameters of the character type char. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
+
source
GenericCharacterTables.parametersMethod
parameters(char::AbstractGenericCharacter)

Return the parameters of the character type char. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
 
 julia> parameters(g[3])
-k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ
source
GenericCharacterTables.infoMethod
info(char::AbstractGenericCharacter)

Return the infolists of the character type char.

Examples

julia> g=generic_character_table("GL2");
+k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ
source
GenericCharacterTables.infoMethod
info(char::AbstractGenericCharacter)

Return the infolists of the character type char.

Examples

julia> g=generic_character_table("GL2");
 
 julia> info(g[2])
 2-element Vector{Any}:
  Any[1, 1]
  Any["A_1", [1, 1]]
-
source

Iteration

Tables implement Julia's iteration interface to iterate over values stored in character types. For a character type ct,

julia> g=generic_character_table("GL2");
+
source

Iteration

Tables implement Julia's iteration interface to iterate over values stored in character types. For a character type ct,

julia> g=generic_character_table("GL2");
 
 julia> ct = g[3]
 Generic character of GL2
@@ -49,7 +49,7 @@
     q*exp(2π𝑖((2*i*kt1 + 2*i*kt2)//(q - 1)))
     0
     exp(2π𝑖((i*kt1 + i*kt2 + j*kt1 + j*kt2)//(q - 1)))
-    (-1)*exp(2π𝑖((i*kt1 + i*kt2)//(q - 1)))
source
Hecke.tensor_productMethod
tensor_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T<:PolyRingElem

Return the tensor product of the character types char1 and char2. This can also be obtained via char1 * char2.

Examples

julia> g = green_function_table("GL3");
+    (-1)*exp(2π𝑖((i*kt1 + i*kt2)//(q - 1)))
source
Hecke.tensor_productMethod
tensor_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T<:PolyRingElem

Return the tensor product of the character types char1 and char2. This can also be obtained via char1 * char2.

Examples

julia> g = green_function_table("GL3");
 
 julia> tensor_product(g[1],g[2])
 Generic character of GL3
@@ -57,7 +57,7 @@
   with values
     -q^6 - 2*q^5 - 2*q^4 + 2*q^2 + 2*q + 1
     2*q + 1
-    1
source
GenericCharacterTables.linear_combinationFunction
linear_combination(coeffs::Vector{Int64}, chars::Vector{<:GenericCharacter})

Return the linear combination of the character types chars with coefficients coeffs.

Examples

julia> g=generic_character_table("GL2");
+    1
source
GenericCharacterTables.linear_combinationFunction
linear_combination(coeffs::Vector{Int64}, chars::Vector{<:GenericCharacter})

Return the linear combination of the character types chars with coefficients coeffs.

Examples

julia> g=generic_character_table("GL2");
 
 julia> linear_combination([5,1],[g[1],g[2]])
 Generic character of GL2
@@ -68,7 +68,7 @@
     (5)*exp(2π𝑖((2*i*kl1)//(q - 1))) + q*exp(2π𝑖((2*i*kl2)//(q - 1)))
     (5)*exp(2π𝑖((2*i*kl1)//(q - 1)))
     exp(2π𝑖((i*kl2 + j*kl2)//(q - 1))) + (5)*exp(2π𝑖((i*kl1 + j*kl1)//(q - 1)))
-    (-1)*exp(2π𝑖((i*kl2)//(q - 1))) + (5)*exp(2π𝑖((i*kl1)//(q - 1)))
source
linear_combination(coeffs::Vector{Int64}, chars::Vector{SimpleGenericCharacter{T}}) where T <: NfPoly

Return the linear combination of the character types chars with coefficients coeffs.

Examples

julia> g=green_function_table("GL3");
+    (-1)*exp(2π𝑖((i*kl2)//(q - 1))) + (5)*exp(2π𝑖((i*kl1)//(q - 1)))
source
linear_combination(coeffs::Vector{Int64}, chars::Vector{SimpleGenericCharacter{T}}) where T <: NfPoly

Return the linear combination of the character types chars with coefficients coeffs.

Examples

julia> g=green_function_table("GL3");
 
 julia> linear_combination([5,1],[g[1],g[2]])
 Generic character of GL3
@@ -76,7 +76,7 @@
   with values
     4*q^3 + 10*q^2 + 10*q + 6
     10*q + 6
-    6
source
GenericCharacterTables.omegaFunction
omega(char::GenericCharacter)

Return the (generic) central character of the character type char.

Examples

julia> g=generic_character_table("GL2");
+    6
source
GenericCharacterTables.omegaFunction
omega(char::GenericCharacter)

Return the (generic) central character of the character type char.

Examples

julia> g=generic_character_table("GL2");
 
 julia> omega(g[1])
 Generic character of GL2
@@ -88,7 +88,7 @@
     (q^2 - 1)*exp(2π𝑖((2*i*k)//(q - 1)))
     (q^2 + q)*exp(2π𝑖((i*k + j*k)//(q - 1)))
     (q^2 - q)*exp(2π𝑖((i*k)//(q - 1)))
-
source
omega(char::SimpleGenericCharacter{T}) where T <: NfPoly

Return the (generic) central character of the character type char.

Examples

julia> g=green_function_table("GL3");
+
source
omega(char::SimpleGenericCharacter{T}) where T <: NfPoly

Return the (generic) central character of the character type char.

Examples

julia> g=green_function_table("GL3");
 
 julia> omega(g[1])
 Generic character of GL3
@@ -96,20 +96,20 @@
   with values
     1
     2*q^2 - q - 1
-    q^3 - 2*q^2 + q
source

Norms and scalar products

GenericCharacterTables allows you to compute norms and scalar products of character types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.

LinearAlgebra.normMethod
norm(char::GenericCharacter)

Return the norm of the character type char.

Examples

julia> g=generic_character_table("GL2");
+    q^3 - 2*q^2 + q
source

Norms and scalar products

GenericCharacterTables allows you to compute norms and scalar products of character types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.

LinearAlgebra.normMethod
norm(char::GenericCharacter)

Return the norm of the character type char.

Examples

julia> g=generic_character_table("GL2");
 
 julia> norm(g[1])
-1
source
LinearAlgebra.normMethod
norm(char::SimpleGenericCharacter{T}) where T <: NfPoly

Return the norm of the character type char.

Examples

julia> g=green_function_table("GL3");
+1
source
LinearAlgebra.normMethod
norm(char::SimpleGenericCharacter{T}) where T <: NfPoly

Return the norm of the character type char.

Examples

julia> g=green_function_table("GL3");
 
 julia> norm(g[1])
-6//(q^3 - 3*q^2 + 3*q - 1)
source
Oscar.scalar_productMethod
scalar_product(char1::GenericCharacter, char2::GenericCharacter)

Return the scalar product between the character types char1 and char2.

Examples

julia> g=generic_character_table("GL2");
+6//(q^3 - 3*q^2 + 3*q - 1)
source
Oscar.scalar_productMethod
scalar_product(char1::GenericCharacter, char2::GenericCharacter)

Return the scalar product between the character types char1 and char2.

Examples

julia> g=generic_character_table("GL2");
 
 julia> scalar_product(g[3],g[2])
 0
 With exceptions:
   l1 + k1 - 2*k2 ∈ (q - 1)ℤ
   l1 - k2 ∈ (q - 1)ℤ
-  k1 - k2 ∈ (q - 1)ℤ
source
Oscar.scalar_productMethod
scalar_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: NfPoly

Return the scalar product between the character types char1 and char2.

Examples

julia> g=green_function_table("GL3");
+  k1 - k2 ∈ (q - 1)ℤ
source
Oscar.scalar_productMethod
scalar_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: NfPoly

Return the scalar product between the character types char1 and char2.

Examples

julia> g=green_function_table("GL3");
 
 julia> scalar_product(g[1],g[2])
-0
source
+0source diff --git a/dev/classes/index.html b/dev/classes/index.html index 954b0138..fbef5019 100644 --- a/dev/classes/index.html +++ b/dev/classes/index.html @@ -3,54 +3,86 @@ julia> number_of_conjugacy_class_types(g) 4 -source
Oscar.number_of_conjugacy_classesMethod
number_of_conjugacy_classes(t::Table)

Return the number of conjugacy classes of table t.

Examples

julia> g=generic_character_table("GL2");
+
source
Oscar.number_of_conjugacy_classesMethod
number_of_conjugacy_classes(t::Table)

Return the number of conjugacy classes of table t.

Examples

julia> g=generic_character_table("GL2");
 
 julia> number_of_conjugacy_classes(g)
 q^2 - 1
-
source
Oscar.number_of_conjugacy_classesMethod
number_of_conjugacy_classes(t::CharTable, class::Int64)

Return the number of conjugacy classes in the class type class of the table t.

Examples

julia> g=generic_character_table("GL2");
+
source
Oscar.number_of_conjugacy_classesMethod
number_of_conjugacy_classes(class::GenericConjugacyClass)

Return the number of conjugacy classes in class.

Examples

julia> g=generic_character_table("GL2");
 
-julia> number_of_conjugacy_classes(g, 1)
-q - 1
-
source
Oscar.number_of_conjugacy_classesMethod
number_of_conjugacy_classes(t::SimpleCharTable, class::Int64)

Return the number of conjugacy classes in the class type class of the table t.

Examples

julia> g=green_function_table("GL2");
+julia> number_of_conjugacy_classes(conjugacy_class_type(g, 1))
+q - 1
source
Oscar.number_of_conjugacy_classesMethod
number_of_conjugacy_classes(class::SimpleGenericConjugacyClass)

Return the number of conjugacy classes in class.

Examples

julia> g=green_function_table("GL2");
+
+julia> number_of_conjugacy_classes(conjugacy_class_type(g, 1))
+1
source
Oscar.number_of_conjugacy_classesMethod
number_of_conjugacy_classes(t::Table, class::Int64)

Return the number of conjugacy classes in the class type class of the table t.

Examples

julia> g=generic_character_table("GL2");
 
 julia> number_of_conjugacy_classes(g, 1)
-1
-
source
GenericCharacterTables.centralizer_orderFunction
centralizer_order(t::Table, class::Int64)

Return the order of the centralizer of the class type class of the table t.

Examples

julia> g=generic_character_table("GL2");
+q - 1
source
AbstractAlgebra.orderMethod
order(class::AbstractGenericConjugacyClass)

Return the order of the conjugacy classes in class.

Examples

julia> g=generic_character_table("GL2");
+
+julia> order(conjugacy_class_type(g, 3))
+q^2 + q
source
AbstractAlgebra.orderMethod
order(t::Table, class::Int64)

Return the order of the conjugacy classes in the class type class of t.

Examples

julia> g=generic_character_table("GL2");
+
+julia> order(g, 3)
+q^2 + q
source
GenericCharacterTables.centralizer_orderFunction
centralizer_order(class::AbstractGenericConjugacyClass)

Return the order of the centralizer of the class type class.

Examples

julia> g=generic_character_table("GL2");
+
+julia> centralizer_order(conjugacy_class_type(g, 1))
+q^4 - q^3 - q^2 + q
+
source
centralizer_order(t::Table, class::Int64)

Return the order of the centralizer of the class type class of the table t.

Examples

julia> g=generic_character_table("GL2");
 
 julia> centralizer_order(g, 1)
 q^4 - q^3 - q^2 + q
-
source
GenericCharacterTables.parametersMethod
parameters(t::CharTable, class::Int64)

Return the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
+
source
GenericCharacterTables.parametersMethod
parameters(class::GenericConjugacyClass)

Return the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
+
+julia> parameters(conjugacy_class_type(g, 3))
+i ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ
source
GenericCharacterTables.parametersMethod
parameters(class::SimpleGenericConjugacyClass)

Return the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("uniGL2");
+
+julia> parameters(conjugacy_class_type(g, 1))
+
source
GenericCharacterTables.parametersMethod
parameters(t::Table, class::Int64)

Return the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
 
 julia> parameters(g, 3)
 i ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ
-
source
GenericCharacterTables.infoMethod
info(t::Table, class::Int64)

Return the infolists of the class type class of the table t.

Examples

julia> g=generic_character_table("GL2");
+
source
GenericCharacterTables.infoMethod
info(class::AbstractGenericConjugacyClass)

Return the infolists of the generic conjugacy class class.

source
GenericCharacterTables.infoMethod
info(class::AbstractGenericConjugacyClass)

Return the infolists of the generic conjugacy class class.

source
GenericCharacterTables.infoMethod
info(t::Table, class::Int64)

Return the infolists of the class type class of the table t.

Examples

julia> g=generic_character_table("GL2");
 
 julia> info(g, 1)
 2-element Vector{Any}:
  Any[1, 0]
  Any["A_1", [1, 1]]
-
source

Norms and scalar products

GenericCharacterTables allows you to compute norms and scalar products of class types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.

LinearAlgebra.normMethod
norm(t::CharTable, class::Int64)

Return the (generic) norm of the class type class.

Examples

julia> g=generic_character_table("GL2");
+
source

Norms and scalar products

GenericCharacterTables allows you to compute norms and scalar products of class types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.

LinearAlgebra.normMethod
norm(class::GenericConjugacyClass)

Return the (generic) norm of class.

Examples

julia> g=generic_character_table("GL2");
 
-julia> norm(g,2)
-1
source
LinearAlgebra.normMethod
norm(t::SimpleCharTable{T}, class::Int64) where T <: NfPoly

Return the (generic) norm of the class type class.

Examples

julia> g=green_function_table("GL3");
+julia> norm(conjugacy_class_type(g, 2))
+1
source
LinearAlgebra.normMethod
norm(class::SimpleGenericConjugacyClass)

Return the (generic) norm of class.

Examples

julia> g=green_function_table("GL3");
+
+julia> norm(conjugacy_class_type(g, 2))
+(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)
source
LinearAlgebra.normMethod
norm(t::Table, class::Int64)

Return the (generic) norm of the class type class.

Examples

julia> g=generic_character_table("GL2");
 
 julia> norm(g,2)
-(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)
source
Oscar.scalar_productMethod
scalar_product(t::CharTable, class1::Int64, class2::Int64)

Return the (generic) scalar product between the class types class1 and class2.

Examples

julia> g=generic_character_table("GL2");
+1
source
Oscar.scalar_productMethod
scalar_product(class1::GenericConjugacyClass, class2::GenericConjugacyClass)

Return the (generic) scalar product between class1 and class2.

Examples

julia> g=generic_character_table("GL2");
+
+julia> scalar_product(conjugacy_class_type(g, 3), conjugacy_class_type(g, 2))
+0
+With exceptions:
+  i1 + j1 - 2*i2 ∈ (q - 1)ℤ
+  i1 - i2 ∈ (q - 1)ℤ
+  j1 - i2 ∈ (q - 1)ℤ
source
Oscar.scalar_productMethod
scalar_product(class1::SimpleGenericConjugacyClass, class2::SimpleGenericConjugacyClass)

Return the (generic) scalar product between class1 and class2.

Examples

julia> g=green_function_table("GL3");
+
+julia> scalar_product(conjugacy_class_type(g, 2), conjugacy_class_type(g, 2))
+(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)
source
Oscar.scalar_productMethod
scalar_product(t::Table, class1::Int64, class2::Int64)

Return the (generic) scalar product between the class types class1 and class2.

Examples

julia> g=generic_character_table("GL2");
 
 julia> scalar_product(g,3,2)
 0
 With exceptions:
   i1 + j1 - 2*i2 ∈ (q - 1)ℤ
   i1 - i2 ∈ (q - 1)ℤ
-  j1 - i2 ∈ (q - 1)ℤ
source
Oscar.scalar_productMethod
scalar_product(t::SimpleCharTable{T}, class1::Int64, class2::Int64) where T <: NfPoly

Return the (generic) scalar product between the class types class1 and class2.

Examples

julia> g=green_function_table("GL3");
+  j1 - i2 ∈ (q - 1)ℤ
source
Oscar.class_multiplication_coefficientMethod
class_multiplication_coefficient(class1::SimpleGenericConjugacyClass, class2::SimpleGenericConjugacyClass, class3::SimpleGenericConjugacyClass)

Return the (generic) class multiplication coefficient of class1, class2 and class3.

Examples

julia> g=green_function_table("GL3");
 
-julia> scalar_product(g,2,2)
-(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)
source
Oscar.class_multiplication_coefficientMethod
class_multiplication_coefficient(t::CharTable, class1::Int64, class2::Int64, class3::Int64)

Return the (generic) class multiplication coefficient of the class types class1, class2 and class3 of the table t.

Examples

julia> g=generic_character_table("SL2.0");
+julia> class_multiplication_coefficient(conjugacy_class_type(g, 1), conjugacy_class_type(g, 2), conjugacy_class_type(g, 3))
+(q + 3)//(q^5 - 2*q^4 + q^3)
source
Oscar.class_multiplication_coefficientMethod
class_multiplication_coefficient(class1::GenericConjugacyClass, class2::GenericConjugacyClass, class3::GenericConjugacyClass)

Return the (generic) class multiplication coefficient of class1, class2 and class3.

Examples

julia> g=generic_character_table("SL2.0");
 
-julia> class_multiplication_coefficient(g,2,2,4)
+julia> class_multiplication_coefficient(conjugacy_class_type(g, 2), conjugacy_class_type(g, 2), conjugacy_class_type(g, 4))
 q + 1
 With exceptions:
-  a3 ∈ (q + 1)ℤ
source
Oscar.class_multiplication_coefficientMethod
class_multiplication_coefficient(t::SimpleCharTable{T}, class1::Int64, class2::Int64, class3::Int64) where T <: NfPoly

Return the (generic) class multiplication coefficient of the class types class1, class2 and class3 of the table t.

Examples

julia> g=green_function_table("GL3");
+  a3 ∈ (q + 1)ℤ
source
Oscar.class_multiplication_coefficientMethod
class_multiplication_coefficient(t::Table, class1::Int64, class2::Int64, class3::Int64)

Return the (generic) class multiplication coefficient of the class types class1, class2 and class3 of the table t.

Examples

julia> g=generic_character_table("SL2.0");
 
-julia> class_multiplication_coefficient(g,1,2,3)
-(q + 3)//(q^5 - 2*q^4 + q^3)
source
+julia> class_multiplication_coefficient(g,2,2,4) +q + 1 +With exceptions: + a3 ∈ (q + 1)ℤsource diff --git a/dev/cyclo/index.html b/dev/cyclo/index.html index 5c0dc4a3..bf7df425 100644 --- a/dev/cyclo/index.html +++ b/dev/cyclo/index.html @@ -1,2 +1,2 @@ -Generic cyclotomics · GenericCharacterTables.jl

Generic cyclotomics

TODO: this file should contain information about generic cyclotomics: what these are, how to work with them; what is and isn't implemented.

+Generic cyclotomics · GenericCharacterTables.jl

Generic cyclotomics

TODO: this file should contain information about generic cyclotomics: what these are, how to work with them; what is and isn't implemented.

diff --git a/dev/index.html b/dev/index.html index cad4238a..91656e2c 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -GenericCharacterTables.jl · GenericCharacterTables.jl

GenericCharacterTables.jl

About

GenericCharacterTables is a library for working with generic character tables. It is based on CHEVIE and aims to provide all its features originally implemented in Maple. It is written in Julia and depends on Nemo and therefore on AbstractAlgebra.

For the mathematical background, consider that there are many interesting families of finite groups. For example, the matrix groups $\mathrm{GL}_n(\mathbb{F}_q)$ or $\mathrm{SL}_n(\mathbb{F}_q)$, for $n>1$ and $q$ a prime power. These groups have many properties in common. It turns out that for a fixed rank (say $n=2$) it is possible to parametrize the conjugacy classes and irreducible characters of these group in terms of $q$, and to write this down into a so-called generic character table. This was first done by Schur for $\mathrm{SL}_2(\mathbb{F}_q)$.

This package provides code to interact with such generic character tables, and also includes many such tables. The code in this package is based on Maple code included in the CHEVIE project.

For more details about the mathematical background, see [GHLMP96].

+GenericCharacterTables.jl · GenericCharacterTables.jl

GenericCharacterTables.jl

About

GenericCharacterTables is a library for working with generic character tables. It is based on CHEVIE and aims to provide all its features originally implemented in Maple. It is written in Julia and depends on Nemo and therefore on AbstractAlgebra.

For the mathematical background, consider that there are many interesting families of finite groups. For example, the matrix groups $\mathrm{GL}_n(\mathbb{F}_q)$ or $\mathrm{SL}_n(\mathbb{F}_q)$, for $n>1$ and $q$ a prime power. These groups have many properties in common. It turns out that for a fixed rank (say $n=2$) it is possible to parametrize the conjugacy classes and irreducible characters of these group in terms of $q$, and to write this down into a so-called generic character table. This was first done by Schur for $\mathrm{SL}_2(\mathbb{F}_q)$.

This package provides code to interact with such generic character tables, and also includes many such tables. The code in this package is based on Maple code included in the CHEVIE project.

For more details about the mathematical background, see [GHLMP96].

diff --git a/dev/modify/index.html b/dev/modify/index.html index 08e91c36..e19ae1fa 100644 --- a/dev/modify/index.html +++ b/dev/modify/index.html @@ -1,5 +1,5 @@ -Specializing parameters · GenericCharacterTables.jl

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")
+Specializing parameters · GenericCharacterTables.jl

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
@@ -12,7 +12,31 @@
   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(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");
+  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
@@ -37,22 +61,4 @@
     exp(2π𝑖((2*k)//(q - 1)))
     exp(2π𝑖((j*k + k)//(q - 1)))
     exp(2π𝑖(k//(q - 1)))
-
source
GenericCharacterTables.specclassparam!Function
specclassparam!(t::CharTable, class::Int64, var::UPoly, expr::RingElement)

Replace the parameter var with expr in the class type class.

Examples

julia> g=generic_character_table("GL2");
-
-julia> [c[1] for c in g]
-4-element Vector{GenericCharacterTables.GenericCyclo}:
- 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> specclassparam!(g, 1, k, 3)
-
-julia> [c[1] for c in g]
-4-element Vector{GenericCharacterTables.GenericCyclo}:
- exp(2π𝑖((6*i)//(q - 1)))
- q*exp(2π𝑖((6*i)//(q - 1)))
- (q + 1)*exp(2π𝑖((i*l + 3*i)//(q - 1)))
- (q - 1)*exp(2π𝑖((3*i)//(q - 1)))
source
+
source
diff --git a/dev/objects.inv b/dev/objects.inv index a76d3ff5..d3517594 100644 Binary files a/dev/objects.inv and b/dev/objects.inv differ diff --git a/dev/references/index.html b/dev/references/index.html index cb57a82c..7f7b9cab 100644 --- a/dev/references/index.html +++ b/dev/references/index.html @@ -1,2 +1,2 @@ -References · GenericCharacterTables.jl

References

[GHLMP96]
M. Geck, G. Hiss, F. Lübeck, G. Malle and G. Pfeiffer. CHEVIE—a system for computing and processing generic character tables. Appl. Algebra Engrg. Comm. Comput. 7, 175–210 (1996). Computational methods in Lie theory (Essen, 1994).
[Kem21]
A. J. Kempner. Polynomials and their residue systems. Trans. Amer. Math. Soc. 22, 240–266 (1921).
[OSCAR]
The Computer Algebra System OSCAR: Algorithms and Examples. Vol. 32 of Algorithms and Computation in Mathematics (Springer, 2024).
+References · GenericCharacterTables.jl

References

[GHLMP96]
M. Geck, G. Hiss, F. Lübeck, G. Malle and G. Pfeiffer. CHEVIE—a system for computing and processing generic character tables. Appl. Algebra Engrg. Comm. Comput. 7, 175–210 (1996). Computational methods in Lie theory (Essen, 1994).
[Kem21]
A. J. Kempner. Polynomials and their residue systems. Trans. Amer. Math. Soc. 22, 240–266 (1921).
[OSCAR]
The Computer Algebra System OSCAR: Algorithms and Examples. Vol. 32 of Algorithms and Computation in Mathematics (Springer, 2024).
diff --git a/dev/search_index.js b/dev/search_index.js index 717c39fa..58353780 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"tables/","page":"Tables","title":"Tables","text":"CurrentModule = GenericCharacterTables\nDocTestSetup = :(using GenericCharacterTables, Oscar)","category":"page"},{"location":"tables/#Tables","page":"Tables","title":"Tables","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"This section describes how to instantiate generic character tables and tables of Green functions, as well as various functions for accessing properties of these tables.","category":"page"},{"location":"tables/#Loading-tables","page":"Tables","title":"Loading tables","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"Before doing anything you need to load a table first. GenericCharacterTables comes with a variety of precomputed tables.","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"generic_character_table","category":"page"},{"location":"tables/#GenericCharacterTables.generic_character_table","page":"Tables","title":"GenericCharacterTables.generic_character_table","text":"generic_character_table(x::String)\n\nReturn the generic character table with name x.\n\nOmitting x will return the names of all importable character tables.\n\nExamples\n\njulia> g = generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\n\n\n\n\n","category":"function"},{"location":"tables/","page":"Tables","title":"Tables","text":"GenericCharacterTables also provides some tables of Green functions. They can be loaded similarly.","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"green_function_table","category":"page"},{"location":"tables/#GenericCharacterTables.green_function_table","page":"Tables","title":"GenericCharacterTables.green_function_table","text":"green_function_table(x::String)\n\nReturn the greenfunction table with name x.\n\nOmitting x will return the names of all importable greenfunctions.\n\nExamples\n\njulia> g = green_function_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 2 irreducible character types\n with 2 class types\n without parameters\n\n\n\n\n\n","category":"function"},{"location":"tables/#Properties","page":"Tables","title":"Properties","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"info(t::Table)\nnumber_of_characters(t::Table)\nnumber_of_parameters\nparameters\norder(t::Table)","category":"page"},{"location":"tables/#GenericCharacterTables.info-Tuple{GenericCharacterTables.Table}","page":"Tables","title":"GenericCharacterTables.info","text":"info(t::Table)\n\nReturn the metadata of t in LaTeX format. This usually includes the time the table was first computed.\n\n\n\n\n\n","category":"method"},{"location":"tables/#GenericCharacterTables.number_of_characters-Tuple{GenericCharacterTables.Table}","page":"Tables","title":"GenericCharacterTables.number_of_characters","text":"number_of_characters(t::Table)\n\nReturn the number of irreducible characters of table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_characters(g)\nq^2 - 1\n\n\n\n\n\n\n","category":"method"},{"location":"tables/#GenericCharacterTables.number_of_parameters","page":"Tables","title":"GenericCharacterTables.number_of_parameters","text":"number_of_parameters(t::CharTable)\n\nReturn the number of class and character parameters of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_parameters(g)\n4\n\n\n\n\n\n\n","category":"function"},{"location":"tables/#GenericCharacterTables.parameters","page":"Tables","title":"GenericCharacterTables.parameters","text":"parameters(t::CharTable, class::Int64)\n\nReturn the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g, 3)\ni ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ\n\n\n\n\n\n\nparameters(t::CharTable)\n\nReturn all parameters the table t depends on.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g)\n(q, (i, j, l, k))\n\n\n\n\n\n\nparameters(char::AbstractGenericCharacter)\n\nReturn the parameters of the character type char. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g[3])\nk ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"function"},{"location":"tables/#AbstractAlgebra.order-Tuple{GenericCharacterTables.Table}","page":"Tables","title":"AbstractAlgebra.order","text":"order(t::Table)\n\nReturn the order of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> order(g)\nq^4 - q^3 - q^2 + q\n\n\n\n\n\n","category":"method"},{"location":"tables/#Iteration","page":"Tables","title":"Iteration","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"Tables implement Julia's iteration interface to iterate over the irreducible character types stored in the table. For a table T,","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"length(T) returns the number of character types in the table,\nT[i] returns the ith character type.","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"For example we can use this to compute the order of the underlying group type. (Of course this can also be checked via order, which retrieves a precomputed value.)","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"julia> g=generic_character_table(\"GL2\");\n\njulia> sum(number_of_characters(c)*degree(c)^2 for c in g)\nq^4 - q^3 - q^2 + q\n\njulia> order(g)\nq^4 - q^3 - q^2 + q","category":"page"},{"location":"references/#References","page":"References","title":"References","text":"","category":"section"},{"location":"references/","page":"References","title":"References","text":"M. Geck, G. Hiss, F. Lübeck, G. Malle and G. Pfeiffer. CHEVIE—a system for computing and processing generic character tables. Appl. Algebra Engrg. Comm. Comput. 7, 175–210 (1996). Computational methods in Lie theory (Essen, 1994).\n\n\n\nA. J. Kempner. Polynomials and their residue systems. Trans. Amer. Math. Soc. 22, 240–266 (1921).\n\n\n\nThe Computer Algebra System OSCAR: Algorithms and Examples. Vol. 32 of Algorithms and Computation in Mathematics (Springer, 2024).\n\n\n\n","category":"page"},{"location":"unexported/","page":"Unexported Functions","title":"Unexported Functions","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"unexported/#Unexported-Functions","page":"Unexported Functions","title":"Unexported Functions","text":"","category":"section"},{"location":"unexported/","page":"Unexported Functions","title":"Unexported Functions","text":"These are all functions for internal use only:","category":"page"},{"location":"unexported/","page":"Unexported Functions","title":"Unexported Functions","text":"Modules = [GenericCharacterTables]\nPublic = false","category":"page"},{"location":"unexported/#GenericCharacterTables.CharTable","page":"Unexported Functions","title":"GenericCharacterTables.CharTable","text":"CharTable <: Table\n\nThe type for generic character tables. This is used to model generic character tables containing generic cyclotomic entries.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.CharTable-Tuple{GenericCharacterTables.GenericCharacter}","page":"Unexported Functions","title":"GenericCharacterTables.CharTable","text":"(t::CharTable)(c::GenericCharacter)\n\nReturn c as a generic character of t. This will only work if t is a version of the parent table of c with a more restricted congruence.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.GenericCharacter","page":"Unexported Functions","title":"GenericCharacterTables.GenericCharacter","text":"GenericCharacter <: AbstractGenericCharacter\n\nThe type for generic characters. These are the generic characters used in CharTable.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> g[1]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}\n of degree 1\n with values\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((i*k + j*k)//(q - 1)))\n exp(2π𝑖((i*k)//(q - 1)))\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.GenericCyclo","page":"Unexported Functions","title":"GenericCharacterTables.GenericCyclo","text":"GenericCyclo <: RingElem\n\nThe type for generic cyclotomic numbers.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R);\n\njulia> S(q; exponent=1//(q-1))\nq*exp(2π𝑖(1//(q - 1)))\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.GenericCycloFrac","page":"Unexported Functions","title":"GenericCharacterTables.GenericCycloFrac","text":"GenericCycloFrac\n\nThe type for fractions of generic cyclotomic numbers.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R);\n\njulia> a = S(q; exponent=1//(q-1))\nq*exp(2π𝑖(1//(q - 1)))\n\njulia> b = S(q^2; exponent=1//(q^2-1))\nq^2*exp(2π𝑖(1//(q^2 - 1)))\n\njulia> a//b\nq*exp(2π𝑖(1//(q - 1)))//(q^2*exp(2π𝑖(1//(q^2 - 1))))\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.GenericCycloRing","page":"Unexported Functions","title":"GenericCharacterTables.GenericCycloRing","text":"GenericCycloRing <: Ring\n\nThe ring of generic cyclotomic numbers.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R)\nGeneric cyclotomic ring\n over Rational field\n dependent on q\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.Parameter","page":"Unexported Functions","title":"GenericCharacterTables.Parameter","text":"Parameter\n\nA paramter of a generic character or class type unique up to a polynomial modulus. They are used in Parameters.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.ParameterExceptions","page":"Unexported Functions","title":"GenericCharacterTables.ParameterExceptions","text":"ParameterExceptions\n\nA collection of parameter exceptions used in GenericCycloFrac.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.ParameterSubstitution","page":"Unexported Functions","title":"GenericCharacterTables.ParameterSubstitution","text":"ParameterSubstitution\n\nA substitution of paramters used in Parameters. They are generated by for example specclassparam!.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.Parameters","page":"Unexported Functions","title":"GenericCharacterTables.Parameters","text":"Parameters\n\nParameters of generic characters and class types. This is used in GenericCharacter and CharTable and is only of internal use.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.SimpleCharTable","page":"Unexported Functions","title":"GenericCharacterTables.SimpleCharTable","text":"SimpleCharTable{T} <: Table\n\nThe type for simple generic character tables. This is used to model generic character tables containing polynomial entries. The type parameter T is the type of the table entries.\n\nExamples\n\njulia> g=generic_character_table(\"uniGL2\")\nGeneric character table uniGL2\n of order q^4 - q^3 - q^2 + q\n with 2 irreducible character types\n with 4 class types\n without parameters\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.SimpleGenericCharacter","page":"Unexported Functions","title":"GenericCharacterTables.SimpleGenericCharacter","text":"SimpleGenericCharacter <: AbstractGenericCharacter\n\nThe type for simple generic characters. These are the generic characters used in SimpleCharTable.\n\nExamples\n\njulia> g=generic_character_table(\"uniGL2\")\nGeneric character table uniGL2\n of order q^4 - q^3 - q^2 + q\n with 2 irreducible character types\n with 4 class types\n without parameters\n\njulia> g[1]\nGeneric character of uniGL2\n of degree q\n with values\n q\n 0\n 1\n -1\n\n\n\n\n\n","category":"type"},{"location":"unexported/#AbstractAlgebra.Generic.normal_form-Tuple{AbstractAlgebra.Generic.UnivPoly{Nemo.ZZRingElem, AbstractAlgebra.Generic.MPoly{Nemo.ZZRingElem}}, Int64}","page":"Unexported Functions","title":"AbstractAlgebra.Generic.normal_form","text":"normal_form(f::ZZUPoly, m::Int64)\n\nReturn a normal form of f modulo m, such that normal_form(f,m) is equal to normal_form(g,m) if and only if f and g are congruent modulo m.\n\nExamples\n\njulia> R=universal_polynomial_ring(ZZ);\n\njulia> x=gen(R, :x);\n\njulia> normal_form(4*x^2,6)\nx^2 + 3*x\n\njulia> normal_form(4*x^2-(x^2+3*x),6)\n0\n\njulia> normal_form(4*x^9+x^7,12)\nx^3 + 4*x\n\njulia> normal_form(4*x^9+x^7-(x^3+4*x),12)\n0\n\n\n\n\n\n\n","category":"method"},{"location":"unexported/#Base.iszero-Tuple{GenericCharacterTables.GenericCycloFrac}","page":"Unexported Functions","title":"Base.iszero","text":"iszero(x::GenericCycloFrac; ignore_exceptions::Bool=false)\n\nReturn if x is zero. If ignore_exceptions is true then the exceptions of x will not be considered.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#Base.show-Tuple{IO, MIME{Symbol(\"text/plain\")}, GenericCharacterTables.AbstractGenericCharacter}","page":"Unexported Functions","title":"Base.show","text":"show(io::IO, c::AbstractGenericCharacter)\n\nDisplay a summary of the generic character c.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> g[3]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n of degree q + 1\n with values\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))\n 0\n\njulia> [g[3]]\n1-element Vector{GenericCharacterTables.GenericCharacter}:\n Generic character of GL2\n\n\n\n\n\n\n","category":"method"},{"location":"unexported/#Base.show-Tuple{IO, MIME{Symbol(\"text/plain\")}, GenericCharacterTables.Table}","page":"Unexported Functions","title":"Base.show","text":"show(io::IO, t::Table)\n\nDisplay a summary of the generic character table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\njulia> [g]\n1-element Vector{GenericCharacterTables.CharTable}:\n Generic character table GL2\n\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.add_exception!-Tuple{GenericCharacterTables.ParameterExceptions, AbstractAlgebra.Generic.FracFieldElem{AbstractAlgebra.Generic.UnivPoly{Nemo.QQFieldElem, AbstractAlgebra.Generic.MPoly{Nemo.QQFieldElem}}}}","page":"Unexported Functions","title":"GenericCharacterTables.add_exception!","text":"add_exception!(a::ParameterExceptions, exception::UPolyFrac)\n\nInclude exception into a. This also removes all now redundant exceptions from a.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.is_integer-Tuple{AbstractAlgebra.Generic.FracFieldElem{AbstractAlgebra.Generic.UnivPoly{Nemo.QQFieldElem, AbstractAlgebra.Generic.MPoly{Nemo.QQFieldElem}}}}","page":"Unexported Functions","title":"GenericCharacterTables.is_integer","text":"is_integer(x::UPolyFrac)\n\nReturn if x represents an integer.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.is_restriction-Tuple{GenericCharacterTables.ParameterExceptions}","page":"Unexported Functions","title":"GenericCharacterTables.is_restriction","text":"is_restriction(x::ParameterExceptions)\n\nReturn if x actually restricts something.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.merge-Tuple{GenericCharacterTables.ParameterExceptions, GenericCharacterTables.ParameterExceptions}","page":"Unexported Functions","title":"GenericCharacterTables.merge","text":"merge(x::ParameterExceptions, y::ParameterExceptions)\n\nReturn a new collection of parameter exceptions composed of x and y where all redundant exceptions are omitted.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.nesum-Tuple{GenericCharacterTables.GenericCyclo, Int64, Int64, Union{Int64, AbstractAlgebra.Generic.UnivPoly{Nemo.QQFieldElem, AbstractAlgebra.Generic.MPoly{Nemo.QQFieldElem}}}}","page":"Unexported Functions","title":"GenericCharacterTables.nesum","text":"nesum(a::GenericCyclo, var::Int64, lower::Int64, upper::Union{Int64,UPoly})\n\nReturn the sum of a, from var=lower to upper as GenericCycloFrac using the closed formular for geometric sums. If this is not possible an exception will be thrown.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R);\n\njulia> i, = gens(R, [\"i\"]);\n\njulia> a = S(Dict(1//(q-1)*i => R(1)))\nexp(2π𝑖(i//(q - 1)))\n\njulia> GenericCharacterTables.nesum(a, i, 1, q-1)\n0\nWith exceptions:\n 1 ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.shift_char_parameters-Tuple{GenericCharacterTables.CharTable, Union{GenericCharacterTables.GenericCyclo, GenericCharacterTables.GenericCycloFrac, GenericCharacterTables.Parameters}, Int64}","page":"Unexported Functions","title":"GenericCharacterTables.shift_char_parameters","text":"shift_char_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)\n\nReplace all character parameters of t in a by their counterparts suffixed with steps.\n\nThis is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.shift_class_parameters-Tuple{GenericCharacterTables.CharTable, Union{GenericCharacterTables.GenericCyclo, GenericCharacterTables.GenericCycloFrac, GenericCharacterTables.Parameters}, Int64}","page":"Unexported Functions","title":"GenericCharacterTables.shift_class_parameters","text":"shift_class_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)\n\nReplace all class parameters of t in a by their counterparts suffixed with steps.\n\nThis is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.shrink-Tuple{GenericCharacterTables.GenericCycloFrac}","page":"Unexported Functions","title":"GenericCharacterTables.shrink","text":"shrink(a::GenericCycloFrac{<:NfPoly})\n\nRemove exceptions from a that follow from the others. And try to simplify the representation of a.\n\n\n\n\n\n","category":"method"},{"location":"book/","page":"An extended example","title":"An extended example","text":"CurrentModule = GenericCharacterTables\nDocTestSetup = :(using GenericCharacterTables, Oscar)","category":"page"},{"location":"book/#An-extended-example","page":"An extended example","title":"An extended example","text":"","category":"section"},{"location":"book/","page":"An extended example","title":"An extended example","text":"The following is based on an example in [OSCAR], which in turn is based on Section 5.3 of [GHLMP96]. To fully understand what is going on we strongly recommend to read the latter source concurrently with the present text.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"To start we load the generic character table for mathrmSL_3(q) with qnotequiv 1pmod 3. To learn about the origin of the table, we could enter print(info(T)).","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> T = generic_character_table(\"SL3.n1\")\nGeneric character table SL3.n1\n of order q^8 - q^6 - q^5 + q^3\n with 8 irreducible character types\n with 8 class types\n with parameters (a, b, m, n)","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"As we can see this table has four parameters in addition to q. The entries of the table are “generalized cyclotomics”, that is, linear combinations over mathbbQ(q) of symbolic “roots of unity” depending on the parameters listed above.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> T[4,4]\n(q + 1)*exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((-2*a*n)//(q - 1)))","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Denoting row 4 of the table by chi_4, we note that is not a single character, but a character type, describing a whole family of characters.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> χ₄ = T[4]\nGeneric character of SL3.n1\n with parameters\n n ∈ {1,…, q - 1} except n ∈ (q - 1)ℤ\n of degree q^2 + q + 1\n with values\n q^2 + q + 1\n q + 1\n 1\n (q + 1)*exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((-2*a*n)//(q - 1)))\n exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((-2*a*n)//(q - 1)))\n exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((b*n)//(q - 1))) + exp(2π𝑖((-a*n - b*n)//(q - 1)))\n exp(2π𝑖((a*n)//(q - 1)))\n 0","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"With these generic characters, we can compute norms, scalar products, and more. For this demonstration we tensor the second character type chi_2 with itself.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> h = T[2] * T[2]\nGeneric character of SL3.n1\n of degree q^4 + 2*q^3 + q^2\n with values\n q^4 + 2*q^3 + q^2\n q^2\n 0\n q^2 + 2*q + 1\n 1\n 4\n 0\n 1","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"We may now attempt to decompose this character type h by computing its scalar product with the irreducible character types. This returns a “generic” scalar product, plus a (possibly empty) list of parameter exceptions for which the general result may not hold. For example:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> scalar_product(T[4], h)\n0\nWith exceptions:\n 2*n1 ∈ (q - 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"This scalar product is 0 except when q-1 divides 2n_1, where n_1 indicates the value of the parameter n for the first factor in the scalar product (i.e. the character type chi_4). For a “generic decomposition” we need to compute all the scalar products and exceptions.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> for i in 1:8 println(\"<$i, h> = \", scalar_product(T[i], h)) end\n<1, h> = 1\n<2, h> = 2\n<3, h> = 2\n<4, h> = 0\nWith exceptions:\n 2*n1 ∈ (q - 1)ℤ\n<5, h> = 0\nWith exceptions:\n 2*n1 ∈ (q - 1)ℤ\n<6, h> = 0\nWith exceptions:\n 2*m1 - n1 ∈ (q - 1)ℤ\n m1 - 2*n1 ∈ (q - 1)ℤ\n m1 + n1 ∈ (q - 1)ℤ\n m1 ∈ (q - 1)ℤ\n m1 - n1 ∈ (q - 1)ℤ\n n1 ∈ (q - 1)ℤ\n<7, h> = 0\nWith exceptions:\n n1 ∈ (q - 1)ℤ\n<8, h> = 0\nWith exceptions:\n q*n1 ∈ (q^2 + q + 1)ℤ\n n1 ∈ (q^2 + q + 1)ℤ\n q*n1 + n1 ∈ (q^2 + q + 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"This suggest a decomposition of chi_2otimeschi_2 into chi_1+2chi_2+2chi_3 “in general”. But comparing the respective degrees, we notice a discrepancy:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> degree(linear_combination([1,2,2],[T[1],T[2],T[3]]))\n2*q^3 + 2*q^2 + 2*q + 1\n\njulia> degree(h)\nq^4 + 2*q^3 + q^2","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"To resolve this, we need to work through the exceptions. Recall that earlier we saw that langlechi_4chi_2^2rangle=0 except when q-1 divides 2n_1, where n_1 was the value of the parameter n used in chi_4. Further restrictions apply to n:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> parameters(T[4])\nn ∈ {1,…, q - 1} except n ∈ (q - 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"So n may take on any value between 1 and q-1 not divisible by q-1. Hence the only possible exception is n=(q-1)2 which can only occur if q is odd. It thus makes sense to consider q odd and q even separately.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"We demonstrate this for q even. Then langlechi_4chi_2^2rangle=0 and with a similar argument langlechi_5chi_2^2rangle=0. We now construct a copy of the table but with the congruence equation qequiv 0pmod 2 applied:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> T2 = set_congruence(T; remainder=0, modulus=2);","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Inspecting the list of exceptions for langlechi_6chi_2^2rangle, the first occurs when q-1 divides m+n. To study this case we specialize m for character type 6:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> (q, (a, b, m, n)) = parameters(T2);\n\njulia> x = parameter(T2, \"x\"); # create an additional \"free\" variable\n\njulia> s = specialize(T2[6], m, -n + (q-1)*x); # force m = -n (mod q-1)","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Recomputing the scalar product now gives a new result. Note that we have to map the character type h into the new table for this to work.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> scalar_product(s, T2(h))\n1\nWith exceptions:\n 3*n1 ∈ (q - 1)ℤ\n 2*n1 ∈ (q - 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"The exceptions both cannot occur as q is even and the table we are considering is only defined for qnotequiv 1pmod 3. By working through the other possible exceptions and irreducible character types, and handling duplicates, one finally obtains","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"chi_2^2 = chi_1+2chi_2+2chi_3\n +frac12sum_n=1^q-2 chi_6(nq-1-n)\n +frac12sum_n=1^q chi_7(n(q-1))","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Where chi_6(nq-1-n) indicates that the 6th character in the table T2 is a family on two parameters: n and q-1-n, while chi_7 depends on only one, namely n(q-1). A similar result can be obtained for odd q albeit with a few more cases that need to be dealt with, but all in essentially the same manner.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"CurrentModule = GenericCharacterTables\nDocTestSetup = :(using GenericCharacterTables, Oscar)","category":"page"},{"location":"characters/#Character-types","page":"Character types","title":"Character types","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"A character type is a family of characters which are indexed by a set of parameters, together with ranges of admissible values for each parameters, and a set of excluded parameter values. The characters in a character type share many properties, e.g. they all have the same degree.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"Since \"types\" already have a very specific meaning in Julia (and other programming languages), we instead sometimes refer to character types as \"generic characters\". In particular the Julia types we use to represent character types are called AbstractGenericCharacter, GenericCharacter and SimpleGenericCharacter.","category":"page"},{"location":"characters/#Properties","page":"Character types","title":"Properties","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"number_of_character_types\nnumber_of_characters(char::GenericCharacter)\ndegree(chi::AbstractGenericCharacter)\nparameters(chi::GenericCharacter)\ninfo(char::AbstractGenericCharacter)","category":"page"},{"location":"characters/#GenericCharacterTables.number_of_character_types","page":"Character types","title":"GenericCharacterTables.number_of_character_types","text":"number_of_character_types(t::Table)\n\nReturn the number of character types of table t. This can also be obtained via length(t).\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_character_types(g)\n4\n\n\n\n\n\n\n","category":"function"},{"location":"characters/#GenericCharacterTables.number_of_characters-Tuple{GenericCharacterTables.GenericCharacter}","page":"Character types","title":"GenericCharacterTables.number_of_characters","text":"number_of_characters(char::GenericCharacter)\n\nReturn the number of characters in the generic character char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_characters(g[1])\nq - 1\n\n\n\n\n\n\n","category":"method"},{"location":"characters/#AbstractAlgebra.degree-Tuple{GenericCharacterTables.AbstractGenericCharacter}","page":"Character types","title":"AbstractAlgebra.degree","text":"degree(char::AbstractGenericCharacter)\n\nReturn the character degree of the characters in char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> degree(g[3])\nq + 1\n\n\n\n\n\n\n","category":"method"},{"location":"characters/#GenericCharacterTables.parameters-Tuple{GenericCharacterTables.GenericCharacter}","page":"Character types","title":"GenericCharacterTables.parameters","text":"parameters(char::AbstractGenericCharacter)\n\nReturn the parameters of the character type char. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g[3])\nk ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"characters/#GenericCharacterTables.info-Tuple{GenericCharacterTables.AbstractGenericCharacter}","page":"Character types","title":"GenericCharacterTables.info","text":"info(char::AbstractGenericCharacter)\n\nReturn the infolists of the character type char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> info(g[2])\n2-element Vector{Any}:\n Any[1, 1]\n Any[\"A_1\", [1, 1]]\n\n\n\n\n\n\n","category":"method"},{"location":"characters/#Iteration","page":"Character types","title":"Iteration","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"Tables implement Julia's iteration interface to iterate over values stored in character types. For a character type ct,","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"length(ct) returns the number of values in the character type (which is equal to the number of class types s in the table), and\nct[i] returns the ith value of the character type.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"julia> g=generic_character_table(\"GL2\");\n\njulia> ct = g[3]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n of degree q + 1\n with values\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))\n 0\n\njulia> collect(ct)\n4-element Vector{GenericCharacterTables.GenericCyclo}:\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))\n 0","category":"page"},{"location":"characters/#Constructing-new-character-types","page":"Character types","title":"Constructing new character types","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"The immediate way to obtain a character type object is to get it from a table T via indexing, i.e., as T[i] for some index i.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"In addition, there are a few ways to construct new character types.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"tensor_product(char1::GenericCharacter, char2::GenericCharacter)\ntensor_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: PolyRingElem\nlinear_combination\nomega","category":"page"},{"location":"characters/#Hecke.tensor_product-Tuple{GenericCharacterTables.GenericCharacter, GenericCharacterTables.GenericCharacter}","page":"Character types","title":"Hecke.tensor_product","text":"tensor_product(char1::GenericCharacter, char2::GenericCharacter)\n\nReturn the tensor product of the character types char1 and char2. This can also be obtained via char1 * char2.\n\nExamples\n\njulia> g = generic_character_table(\"GL2\");\n\njulia> tensor_product(g[1], g[2])\nGeneric character of GL2\n with parameters\n kt1 ∈ {1,…, q - 1}, kt2 ∈ {1,…, q - 1}\n of degree q\n with values\n q*exp(2π𝑖((2*i*kt1 + 2*i*kt2)//(q - 1)))\n 0\n exp(2π𝑖((i*kt1 + i*kt2 + j*kt1 + j*kt2)//(q - 1)))\n (-1)*exp(2π𝑖((i*kt1 + i*kt2)//(q - 1)))\n\n\n\n\n\n","category":"method"},{"location":"characters/#Hecke.tensor_product-Union{Tuple{T}, Tuple{GenericCharacterTables.SimpleGenericCharacter{T}, GenericCharacterTables.SimpleGenericCharacter{T}}} where T<:AbstractAlgebra.PolyRingElem","page":"Character types","title":"Hecke.tensor_product","text":"tensor_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T<:PolyRingElem\n\nReturn the tensor product of the character types char1 and char2. This can also be obtained via char1 * char2.\n\nExamples\n\njulia> g = green_function_table(\"GL3\");\n\njulia> tensor_product(g[1],g[2])\nGeneric character of GL3\n of degree -q^6 - 2*q^5 - 2*q^4 + 2*q^2 + 2*q + 1\n with values\n -q^6 - 2*q^5 - 2*q^4 + 2*q^2 + 2*q + 1\n 2*q + 1\n 1\n\n\n\n\n\n","category":"method"},{"location":"characters/#GenericCharacterTables.linear_combination","page":"Character types","title":"GenericCharacterTables.linear_combination","text":"linear_combination(coeffs::Vector{Int64}, chars::Vector{<:GenericCharacter})\n\nReturn the linear combination of the character types chars with coefficients coeffs.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> linear_combination([5,1],[g[1],g[2]])\nGeneric character of GL2\n with parameters\n kl1 ∈ {1,…, q - 1}, kl2 ∈ {1,…, q - 1}\n of degree q + 5\n with values\n (5)*exp(2π𝑖((2*i*kl1)//(q - 1))) + q*exp(2π𝑖((2*i*kl2)//(q - 1)))\n (5)*exp(2π𝑖((2*i*kl1)//(q - 1)))\n exp(2π𝑖((i*kl2 + j*kl2)//(q - 1))) + (5)*exp(2π𝑖((i*kl1 + j*kl1)//(q - 1)))\n (-1)*exp(2π𝑖((i*kl2)//(q - 1))) + (5)*exp(2π𝑖((i*kl1)//(q - 1)))\n\n\n\n\n\nlinear_combination(coeffs::Vector{Int64}, chars::Vector{SimpleGenericCharacter{T}}) where T <: NfPoly\n\nReturn the linear combination of the character types chars with coefficients coeffs.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> linear_combination([5,1],[g[1],g[2]])\nGeneric character of GL3\n of degree 4*q^3 + 10*q^2 + 10*q + 6\n with values\n 4*q^3 + 10*q^2 + 10*q + 6\n 10*q + 6\n 6\n\n\n\n\n\n","category":"function"},{"location":"characters/#GenericCharacterTables.omega","page":"Character types","title":"GenericCharacterTables.omega","text":"omega(char::GenericCharacter)\n\nReturn the (generic) central character of the character type char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> omega(g[1])\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}\n of degree 1\n with values\n exp(2π𝑖((2*i*k)//(q - 1)))\n (q^2 - 1)*exp(2π𝑖((2*i*k)//(q - 1)))\n (q^2 + q)*exp(2π𝑖((i*k + j*k)//(q - 1)))\n (q^2 - q)*exp(2π𝑖((i*k)//(q - 1)))\n\n\n\n\n\n\nomega(char::SimpleGenericCharacter{T}) where T <: NfPoly\n\nReturn the (generic) central character of the character type char.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> omega(g[1])\nGeneric character of GL3\n of degree 1\n with values\n 1\n 2*q^2 - q - 1\n q^3 - 2*q^2 + q\n\n\n\n\n\n","category":"function"},{"location":"characters/#Norms-and-scalar-products","page":"Character types","title":"Norms and scalar products","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"GenericCharacterTables allows you to compute norms and scalar products of character types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"norm(char::GenericCharacter)\nnorm(char::SimpleGenericCharacter{T}) where T <: NfPoly\nscalar_product(char1::GenericCharacter, char2::GenericCharacter)\nscalar_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: NfPoly","category":"page"},{"location":"characters/#LinearAlgebra.norm-Tuple{GenericCharacterTables.GenericCharacter}","page":"Character types","title":"LinearAlgebra.norm","text":"norm(char::GenericCharacter)\n\nReturn the norm of the character type char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> norm(g[1])\n1\n\n\n\n\n\n","category":"method"},{"location":"characters/#LinearAlgebra.norm-Union{Tuple{GenericCharacterTables.SimpleGenericCharacter{T}}, Tuple{T}} where T<:Union{AbstractAlgebra.PolyRingElem{Nemo.AbsSimpleNumFieldElem}, AbstractAlgebra.PolyRingElem{Nemo.QQFieldElem}}","page":"Character types","title":"LinearAlgebra.norm","text":"norm(char::SimpleGenericCharacter{T}) where T <: NfPoly\n\nReturn the norm of the character type char.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> norm(g[1])\n6//(q^3 - 3*q^2 + 3*q - 1)\n\n\n\n\n\n","category":"method"},{"location":"characters/#Oscar.scalar_product-Tuple{GenericCharacterTables.GenericCharacter, GenericCharacterTables.GenericCharacter}","page":"Character types","title":"Oscar.scalar_product","text":"scalar_product(char1::GenericCharacter, char2::GenericCharacter)\n\nReturn the scalar product between the character types char1 and char2.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> scalar_product(g[3],g[2])\n0\nWith exceptions:\n l1 + k1 - 2*k2 ∈ (q - 1)ℤ\n l1 - k2 ∈ (q - 1)ℤ\n k1 - k2 ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"characters/#Oscar.scalar_product-Union{Tuple{T}, Tuple{GenericCharacterTables.SimpleGenericCharacter{T}, GenericCharacterTables.SimpleGenericCharacter{T}}} where T<:Union{AbstractAlgebra.PolyRingElem{Nemo.AbsSimpleNumFieldElem}, AbstractAlgebra.PolyRingElem{Nemo.QQFieldElem}}","page":"Character types","title":"Oscar.scalar_product","text":"scalar_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: NfPoly\n\nReturn the scalar product between the character types char1 and char2.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> scalar_product(g[1],g[2])\n0\n\n\n\n\n\n","category":"method"},{"location":"modify/","page":"Specializing parameters","title":"Specializing parameters","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"modify/#Specializing-parameters","page":"Specializing parameters","title":"Specializing parameters","text":"","category":"section"},{"location":"modify/","page":"Specializing parameters","title":"Specializing parameters","text":"Sometimes one likes to specify some of the free variables in the tables to simplify the often very complicated values a bit.","category":"page"},{"location":"modify/","page":"Specializing parameters","title":"Specializing parameters","text":"set_congruence\nspecialize\nspecclassparam!","category":"page"},{"location":"modify/#GenericCharacterTables.set_congruence","page":"Specializing parameters","title":"GenericCharacterTables.set_congruence","text":"set_congruence(x::CharTable, congruence::Tuple{ZZRingElem, ZZRingElem})\n\nReturn 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.\n\n\n\n\n\nset_congruence(x::CharTable; remainder::Union{Int, ZZRingElem}, modulus::Union{Int, ZZRingElem})\n\nReturn 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.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\njulia> set_congruence(g; remainder=0, modulus=2)\nGeneric character table GL2*\n of order q^4 - q^3 - q^2 + q\n restricted to q congruent to 0 modulo 2\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\n\n\n\n\n","category":"function"},{"location":"modify/#GenericCharacterTables.specialize","page":"Specializing parameters","title":"GenericCharacterTables.specialize","text":"specialize(char::GenericCharacter, var::UPoly, expr::RingElement)\n\nReturn the generic character where the parameter var is replaced with expr in char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> g[1]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}\n of degree 1\n with values\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((i*k + j*k)//(q - 1)))\n exp(2π𝑖((i*k)//(q - 1)))\n\njulia> q,(i,j,l,k) = parameters(g);\n\njulia> specialize(g[1], i, q)\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}, substitutions: i = q\n of degree 1\n with values\n exp(2π𝑖((2*k)//(q - 1)))\n exp(2π𝑖((2*k)//(q - 1)))\n exp(2π𝑖((j*k + k)//(q - 1)))\n exp(2π𝑖(k//(q - 1)))\n\n\n\n\n\n\n","category":"function"},{"location":"modify/#GenericCharacterTables.specclassparam!","page":"Specializing parameters","title":"GenericCharacterTables.specclassparam!","text":"specclassparam!(t::CharTable, class::Int64, var::UPoly, expr::RingElement)\n\nReplace the parameter var with expr in the class type class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> [c[1] for c in g]\n4-element Vector{GenericCharacterTables.GenericCyclo}:\n exp(2π𝑖((2*i*k)//(q - 1)))\n q*exp(2π𝑖((2*i*k)//(q - 1)))\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n (q - 1)*exp(2π𝑖((i*k)//(q - 1)))\n\njulia> q,(i,j,l,k) = parameters(g);\n\njulia> specclassparam!(g, 1, k, 3)\n\njulia> [c[1] for c in g]\n4-element Vector{GenericCharacterTables.GenericCyclo}:\n exp(2π𝑖((6*i)//(q - 1)))\n q*exp(2π𝑖((6*i)//(q - 1)))\n (q + 1)*exp(2π𝑖((i*l + 3*i)//(q - 1)))\n (q - 1)*exp(2π𝑖((3*i)//(q - 1)))\n\n\n\n\n\n","category":"function"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"classes/#Conjugacy-class-types","page":"Conjugacy class types","title":"Conjugacy class types","text":"","category":"section"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"A class type is a family of conjugacy classes which are indexed by a set of parameters, together with ranges of admissible values for each parameters, and a set of excluded parameter values.","category":"page"},{"location":"classes/#Properties","page":"Conjugacy class types","title":"Properties","text":"","category":"section"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"number_of_conjugacy_class_types\nnumber_of_conjugacy_classes(t::Table)\nnumber_of_conjugacy_classes(t::CharTable, class::Int64)\nnumber_of_conjugacy_classes(t::SimpleCharTable, class::Int64)\ncentralizer_order\nparameters(t::CharTable, class::Int64)\ninfo(t::Table, class::Int64)","category":"page"},{"location":"classes/#GenericCharacterTables.number_of_conjugacy_class_types","page":"Conjugacy class types","title":"GenericCharacterTables.number_of_conjugacy_class_types","text":"number_of_conjugacy_class_types(t::Table)\n\nReturn the number of conjugacy class types of table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_conjugacy_class_types(g)\n4\n\n\n\n\n\n\n","category":"function"},{"location":"classes/#Oscar.number_of_conjugacy_classes-Tuple{GenericCharacterTables.Table}","page":"Conjugacy class types","title":"Oscar.number_of_conjugacy_classes","text":"number_of_conjugacy_classes(t::Table)\n\nReturn the number of conjugacy classes of table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_conjugacy_classes(g)\nq^2 - 1\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.number_of_conjugacy_classes-Tuple{GenericCharacterTables.CharTable, Int64}","page":"Conjugacy class types","title":"Oscar.number_of_conjugacy_classes","text":"number_of_conjugacy_classes(t::CharTable, class::Int64)\n\nReturn the number of conjugacy classes in the class type class of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_conjugacy_classes(g, 1)\nq - 1\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.number_of_conjugacy_classes-Tuple{GenericCharacterTables.SimpleCharTable, Int64}","page":"Conjugacy class types","title":"Oscar.number_of_conjugacy_classes","text":"number_of_conjugacy_classes(t::SimpleCharTable, class::Int64)\n\nReturn the number of conjugacy classes in the class type class of the table t.\n\nExamples\n\njulia> g=green_function_table(\"GL2\");\n\njulia> number_of_conjugacy_classes(g, 1)\n1\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.centralizer_order","page":"Conjugacy class types","title":"GenericCharacterTables.centralizer_order","text":"centralizer_order(t::Table, class::Int64)\n\nReturn the order of the centralizer of the class type class of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> centralizer_order(g, 1)\nq^4 - q^3 - q^2 + q\n\n\n\n\n\n\n","category":"function"},{"location":"classes/#GenericCharacterTables.parameters-Tuple{GenericCharacterTables.CharTable, Int64}","page":"Conjugacy class types","title":"GenericCharacterTables.parameters","text":"parameters(t::CharTable, class::Int64)\n\nReturn the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g, 3)\ni ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.info-Tuple{GenericCharacterTables.Table, Int64}","page":"Conjugacy class types","title":"GenericCharacterTables.info","text":"info(t::Table, class::Int64)\n\nReturn the infolists of the class type class of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> info(g, 1)\n2-element Vector{Any}:\n Any[1, 0]\n Any[\"A_1\", [1, 1]]\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#Norms-and-scalar-products","page":"Conjugacy class types","title":"Norms and scalar products","text":"","category":"section"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"GenericCharacterTables allows you to compute norms and scalar products of class types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.","category":"page"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"norm(t::CharTable, class::Int64)\nnorm(t::SimpleCharTable{T}, class::Int64) where T <: NfPoly\nscalar_product(t::CharTable, class1::Int64, class2::Int64)\nscalar_product(t::SimpleCharTable{T}, class1::Int64, class2::Int64) where T <: NfPoly\nclass_multiplication_coefficient(t::CharTable, class1::Int64, class2::Int64, class3::Int64)\nclass_multiplication_coefficient(t::SimpleCharTable{T}, class1::Int64, class2::Int64, class3::Int64) where T <: NfPoly","category":"page"},{"location":"classes/#LinearAlgebra.norm-Tuple{GenericCharacterTables.CharTable, Int64}","page":"Conjugacy class types","title":"LinearAlgebra.norm","text":"norm(t::CharTable, class::Int64)\n\nReturn the (generic) norm of the class type class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> norm(g,2)\n1\n\n\n\n\n\n","category":"method"},{"location":"classes/#LinearAlgebra.norm-Union{Tuple{T}, Tuple{GenericCharacterTables.SimpleCharTable{T}, Int64}} where T<:Union{AbstractAlgebra.PolyRingElem{Nemo.AbsSimpleNumFieldElem}, AbstractAlgebra.PolyRingElem{Nemo.QQFieldElem}}","page":"Conjugacy class types","title":"LinearAlgebra.norm","text":"norm(t::SimpleCharTable{T}, class::Int64) where T <: NfPoly\n\nReturn the (generic) norm of the class type class.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> norm(g,2)\n(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.scalar_product-Tuple{GenericCharacterTables.CharTable, Int64, Int64}","page":"Conjugacy class types","title":"Oscar.scalar_product","text":"scalar_product(t::CharTable, class1::Int64, class2::Int64)\n\nReturn the (generic) scalar product between the class types class1 and class2.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> scalar_product(g,3,2)\n0\nWith exceptions:\n i1 + j1 - 2*i2 ∈ (q - 1)ℤ\n i1 - i2 ∈ (q - 1)ℤ\n j1 - i2 ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.scalar_product-Union{Tuple{T}, Tuple{GenericCharacterTables.SimpleCharTable{T}, Int64, Int64}} where T<:Union{AbstractAlgebra.PolyRingElem{Nemo.AbsSimpleNumFieldElem}, AbstractAlgebra.PolyRingElem{Nemo.QQFieldElem}}","page":"Conjugacy class types","title":"Oscar.scalar_product","text":"scalar_product(t::SimpleCharTable{T}, class1::Int64, class2::Int64) where T <: NfPoly\n\nReturn the (generic) scalar product between the class types class1 and class2.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> scalar_product(g,2,2)\n(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.class_multiplication_coefficient-Tuple{GenericCharacterTables.CharTable, Int64, Int64, Int64}","page":"Conjugacy class types","title":"Oscar.class_multiplication_coefficient","text":"class_multiplication_coefficient(t::CharTable, class1::Int64, class2::Int64, class3::Int64)\n\nReturn the (generic) class multiplication coefficient of the class types class1, class2 and class3 of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"SL2.0\");\n\njulia> class_multiplication_coefficient(g,2,2,4)\nq + 1\nWith exceptions:\n a3 ∈ (q + 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.class_multiplication_coefficient-Union{Tuple{T}, Tuple{GenericCharacterTables.SimpleCharTable{T}, Int64, Int64, Int64}} where T<:Union{AbstractAlgebra.PolyRingElem{Nemo.AbsSimpleNumFieldElem}, AbstractAlgebra.PolyRingElem{Nemo.QQFieldElem}}","page":"Conjugacy class types","title":"Oscar.class_multiplication_coefficient","text":"class_multiplication_coefficient(t::SimpleCharTable{T}, class1::Int64, class2::Int64, class3::Int64) where T <: NfPoly\n\nReturn the (generic) class multiplication coefficient of the class types class1, class2 and class3 of the table t.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> class_multiplication_coefficient(g,1,2,3)\n(q + 3)//(q^5 - 2*q^4 + q^3)\n\n\n\n\n\n","category":"method"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"#GenericCharacterTables.jl","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"","category":"section"},{"location":"#About","page":"GenericCharacterTables.jl","title":"About","text":"","category":"section"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"GenericCharacterTables is a library for working with generic character tables. It is based on CHEVIE and aims to provide all its features originally implemented in Maple. It is written in Julia and depends on Nemo and therefore on AbstractAlgebra.","category":"page"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"For the mathematical background, consider that there are many interesting families of finite groups. For example, the matrix groups mathrmGL_n(mathbbF_q) or mathrmSL_n(mathbbF_q), for n1 and q a prime power. These groups have many properties in common. It turns out that for a fixed rank (say n=2) it is possible to parametrize the conjugacy classes and irreducible characters of these group in terms of q, and to write this down into a so-called generic character table. This was first done by Schur for mathrmSL_2(mathbbF_q).","category":"page"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"This package provides code to interact with such generic character tables, and also includes many such tables. The code in this package is based on Maple code included in the CHEVIE project.","category":"page"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"For more details about the mathematical background, see [GHLMP96].","category":"page"},{"location":"cyclo/","page":"Generic cyclotomics","title":"Generic cyclotomics","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"cyclo/#Generic-cyclotomics","page":"Generic cyclotomics","title":"Generic cyclotomics","text":"","category":"section"},{"location":"cyclo/","page":"Generic cyclotomics","title":"Generic cyclotomics","text":"TODO: this file should contain information about generic cyclotomics: what these are, how to work with them; what is and isn't implemented.","category":"page"}] +[{"location":"tables/","page":"Tables","title":"Tables","text":"CurrentModule = GenericCharacterTables\nDocTestSetup = :(using GenericCharacterTables, Oscar)","category":"page"},{"location":"tables/#Tables","page":"Tables","title":"Tables","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"This section describes how to instantiate generic character tables and tables of Green functions, as well as various functions for accessing properties of these tables.","category":"page"},{"location":"tables/#Loading-tables","page":"Tables","title":"Loading tables","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"Before doing anything you need to load a table first. GenericCharacterTables comes with a variety of precomputed tables.","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"generic_character_table","category":"page"},{"location":"tables/#GenericCharacterTables.generic_character_table","page":"Tables","title":"GenericCharacterTables.generic_character_table","text":"generic_character_table(x::String)\n\nReturn the generic character table with name x.\n\nOmitting x will return the names of all importable character tables.\n\nExamples\n\njulia> g = generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\n\n\n\n\n","category":"function"},{"location":"tables/","page":"Tables","title":"Tables","text":"GenericCharacterTables also provides some tables of Green functions. They can be loaded similarly.","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"green_function_table","category":"page"},{"location":"tables/#GenericCharacterTables.green_function_table","page":"Tables","title":"GenericCharacterTables.green_function_table","text":"green_function_table(x::String)\n\nReturn the greenfunction table with name x.\n\nOmitting x will return the names of all importable greenfunctions.\n\nExamples\n\njulia> g = green_function_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 2 irreducible character types\n with 2 class types\n without parameters\n\n\n\n\n\n","category":"function"},{"location":"tables/#Properties","page":"Tables","title":"Properties","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"info(t::Table)\nnumber_of_characters(t::Table)\nnumber_of_parameters\nparameters\norder(t::Table)","category":"page"},{"location":"tables/#GenericCharacterTables.info-Tuple{GenericCharacterTables.Table}","page":"Tables","title":"GenericCharacterTables.info","text":"info(t::Table)\n\nReturn the metadata of t in LaTeX format. This usually includes the time the table was first computed.\n\n\n\n\n\n","category":"method"},{"location":"tables/#GenericCharacterTables.number_of_characters-Tuple{GenericCharacterTables.Table}","page":"Tables","title":"GenericCharacterTables.number_of_characters","text":"number_of_characters(t::Table)\n\nReturn the number of irreducible characters of table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_characters(g)\nq^2 - 1\n\n\n\n\n\n\n","category":"method"},{"location":"tables/#GenericCharacterTables.number_of_parameters","page":"Tables","title":"GenericCharacterTables.number_of_parameters","text":"number_of_parameters(t::CharTable)\n\nReturn the number of class and character parameters of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_parameters(g)\n4\n\n\n\n\n\n\n","category":"function"},{"location":"tables/#GenericCharacterTables.parameters","page":"Tables","title":"GenericCharacterTables.parameters","text":"parameters(class::GenericConjugacyClass)\n\nReturn the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(conjugacy_class_type(g, 3))\ni ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ\n\n\n\n\n\nparameters(class::SimpleGenericConjugacyClass)\n\nReturn the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"uniGL2\");\n\njulia> parameters(conjugacy_class_type(g, 1))\n\n\n\n\n\n\nparameters(t::Table, class::Int64)\n\nReturn the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g, 3)\ni ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ\n\n\n\n\n\n\nparameters(t::CharTable)\n\nReturn all parameters the table t depends on.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g)\n(q, (i, j, l, k))\n\n\n\n\n\n\nparameters(char::AbstractGenericCharacter)\n\nReturn the parameters of the character type char. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g[3])\nk ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"function"},{"location":"tables/#AbstractAlgebra.order-Tuple{GenericCharacterTables.Table}","page":"Tables","title":"AbstractAlgebra.order","text":"order(t::Table)\n\nReturn the order of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> order(g)\nq^4 - q^3 - q^2 + q\n\n\n\n\n\n","category":"method"},{"location":"tables/#Iteration","page":"Tables","title":"Iteration","text":"","category":"section"},{"location":"tables/","page":"Tables","title":"Tables","text":"Tables implement Julia's iteration interface to iterate over the irreducible character types stored in the table. For a table T,","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"length(T) returns the number of character types in the table,\nT[i] returns the ith character type.","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"For example we can use this to compute the order of the underlying group type. (Of course this can also be checked via order, which retrieves a precomputed value.)","category":"page"},{"location":"tables/","page":"Tables","title":"Tables","text":"julia> g=generic_character_table(\"GL2\");\n\njulia> sum(number_of_characters(c)*degree(c)^2 for c in g)\nq^4 - q^3 - q^2 + q\n\njulia> order(g)\nq^4 - q^3 - q^2 + q","category":"page"},{"location":"references/#References","page":"References","title":"References","text":"","category":"section"},{"location":"references/","page":"References","title":"References","text":"M. Geck, G. Hiss, F. Lübeck, G. Malle and G. Pfeiffer. CHEVIE—a system for computing and processing generic character tables. Appl. Algebra Engrg. Comm. Comput. 7, 175–210 (1996). Computational methods in Lie theory (Essen, 1994).\n\n\n\nA. J. Kempner. Polynomials and their residue systems. Trans. Amer. Math. Soc. 22, 240–266 (1921).\n\n\n\nThe Computer Algebra System OSCAR: Algorithms and Examples. Vol. 32 of Algorithms and Computation in Mathematics (Springer, 2024).\n\n\n\n","category":"page"},{"location":"unexported/","page":"Unexported Functions","title":"Unexported Functions","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"unexported/#Unexported-Functions","page":"Unexported Functions","title":"Unexported Functions","text":"","category":"section"},{"location":"unexported/","page":"Unexported Functions","title":"Unexported Functions","text":"These are all functions for internal use only:","category":"page"},{"location":"unexported/","page":"Unexported Functions","title":"Unexported Functions","text":"Modules = [GenericCharacterTables]\nPublic = false","category":"page"},{"location":"unexported/#GenericCharacterTables.CharTable","page":"Unexported Functions","title":"GenericCharacterTables.CharTable","text":"CharTable <: Table\n\nThe type for generic character tables. This is used to model generic character tables containing generic cyclotomic entries.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.CharTable-Tuple{GenericCharacterTables.GenericCharacter}","page":"Unexported Functions","title":"GenericCharacterTables.CharTable","text":"(t::CharTable)(c::GenericCharacter)\n\nReturn c as a generic character of t. This will only work if t is a version of the parent table of c with a more restricted congruence.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.GenericCharacter","page":"Unexported Functions","title":"GenericCharacterTables.GenericCharacter","text":"GenericCharacter <: AbstractGenericCharacter\n\nThe type for generic characters. These are the generic characters used in CharTable.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> g[1]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}\n of degree 1\n with values\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((i*k + j*k)//(q - 1)))\n exp(2π𝑖((i*k)//(q - 1)))\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.GenericConjugacyClass","page":"Unexported Functions","title":"GenericCharacterTables.GenericConjugacyClass","text":"GenericConjugacyClass <: AbstractGenericConjugacyClass\n\nThe type for generic conjugacy classes. These are the generic conjugacy classes used in CharTable.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.GenericCyclo","page":"Unexported Functions","title":"GenericCharacterTables.GenericCyclo","text":"GenericCyclo <: RingElem\n\nThe type for generic cyclotomic numbers.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R);\n\njulia> S(q; exponent=1//(q-1))\nq*exp(2π𝑖(1//(q - 1)))\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.GenericCycloFrac","page":"Unexported Functions","title":"GenericCharacterTables.GenericCycloFrac","text":"GenericCycloFrac\n\nThe type for fractions of generic cyclotomic numbers.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R);\n\njulia> a = S(q; exponent=1//(q-1))\nq*exp(2π𝑖(1//(q - 1)))\n\njulia> b = S(q^2; exponent=1//(q^2-1))\nq^2*exp(2π𝑖(1//(q^2 - 1)))\n\njulia> a//b\nq*exp(2π𝑖(1//(q - 1)))//(q^2*exp(2π𝑖(1//(q^2 - 1))))\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.GenericCycloRing","page":"Unexported Functions","title":"GenericCharacterTables.GenericCycloRing","text":"GenericCycloRing <: Ring\n\nThe ring of generic cyclotomic numbers.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R)\nGeneric cyclotomic ring\n over Rational field\n dependent on q\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.Parameter","page":"Unexported Functions","title":"GenericCharacterTables.Parameter","text":"Parameter\n\nA paramter of a generic character or class type unique up to a polynomial modulus. They are used in Parameters.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.ParameterExceptions","page":"Unexported Functions","title":"GenericCharacterTables.ParameterExceptions","text":"ParameterExceptions\n\nA collection of parameter exceptions used in GenericCycloFrac.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.ParameterSubstitution","page":"Unexported Functions","title":"GenericCharacterTables.ParameterSubstitution","text":"ParameterSubstitution\n\nA substitution of paramters used in Parameters. They are generated by for example specclassparam!.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.Parameters","page":"Unexported Functions","title":"GenericCharacterTables.Parameters","text":"Parameters\n\nParameters of generic characters and class types. This is used in GenericCharacter and CharTable and is only of internal use.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.SimpleCharTable","page":"Unexported Functions","title":"GenericCharacterTables.SimpleCharTable","text":"SimpleCharTable{T} <: Table\n\nThe type for simple generic character tables. This is used to model generic character tables containing polynomial entries. The type parameter T is the type of the table entries.\n\nExamples\n\njulia> g=generic_character_table(\"uniGL2\")\nGeneric character table uniGL2\n of order q^4 - q^3 - q^2 + q\n with 2 irreducible character types\n with 4 class types\n without parameters\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.SimpleGenericCharacter","page":"Unexported Functions","title":"GenericCharacterTables.SimpleGenericCharacter","text":"SimpleGenericCharacter <: AbstractGenericCharacter\n\nThe type for simple generic characters. These are the generic characters used in SimpleCharTable.\n\nExamples\n\njulia> g=generic_character_table(\"uniGL2\")\nGeneric character table uniGL2\n of order q^4 - q^3 - q^2 + q\n with 2 irreducible character types\n with 4 class types\n without parameters\n\njulia> g[1]\nGeneric character of uniGL2\n of degree q\n with values\n q\n 0\n 1\n -1\n\n\n\n\n\n","category":"type"},{"location":"unexported/#GenericCharacterTables.SimpleGenericConjugacyClass","page":"Unexported Functions","title":"GenericCharacterTables.SimpleGenericConjugacyClass","text":"SimpleGenericConjugacyClass <: AbstractGenericConjugacyClass\n\nThe type for simple generic conjugacy classes. These are the generic conjugacy classes used in SimpleCharTable.\n\n\n\n\n\n","category":"type"},{"location":"unexported/#AbstractAlgebra.Generic.normal_form-Tuple{AbstractAlgebra.Generic.UnivPoly{Nemo.ZZRingElem, AbstractAlgebra.Generic.MPoly{Nemo.ZZRingElem}}, Int64}","page":"Unexported Functions","title":"AbstractAlgebra.Generic.normal_form","text":"normal_form(f::ZZUPoly, m::Int64)\n\nReturn a normal form of f modulo m, such that normal_form(f,m) is equal to normal_form(g,m) if and only if f and g are congruent modulo m.\n\nExamples\n\njulia> R=universal_polynomial_ring(ZZ);\n\njulia> x=gen(R, :x);\n\njulia> normal_form(4*x^2,6)\nx^2 + 3*x\n\njulia> normal_form(4*x^2-(x^2+3*x),6)\n0\n\njulia> normal_form(4*x^9+x^7,12)\nx^3 + 4*x\n\njulia> normal_form(4*x^9+x^7-(x^3+4*x),12)\n0\n\n\n\n\n\n\n","category":"method"},{"location":"unexported/#Base.iszero-Tuple{GenericCharacterTables.GenericCycloFrac}","page":"Unexported Functions","title":"Base.iszero","text":"iszero(x::GenericCycloFrac; ignore_exceptions::Bool=false)\n\nReturn if x is zero. If ignore_exceptions is true then the exceptions of x will not be considered.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#Base.show-Tuple{IO, MIME{Symbol(\"text/plain\")}, GenericCharacterTables.AbstractGenericCharacter}","page":"Unexported Functions","title":"Base.show","text":"show(io::IO, c::AbstractGenericCharacter)\n\nDisplay a summary of the generic character c.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> g[3]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n of degree q + 1\n with values\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))\n 0\n\njulia> [g[3]]\n1-element Vector{GenericCharacterTables.GenericCharacter}:\n Generic character of GL2\n\n\n\n\n\n\n","category":"method"},{"location":"unexported/#Base.show-Tuple{IO, MIME{Symbol(\"text/plain\")}, GenericCharacterTables.AbstractGenericConjugacyClass}","page":"Unexported Functions","title":"Base.show","text":"show(io::IO, c::AbstractGenericConjugacyClass)\n\nDisplay a summary of the generic character c.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> conjugacy_class_type(g, 3)\nGeneric conjugacy class of GL2\n with parameters \n i ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ\n of order q^2 + q\n with values\n exp(2π𝑖((i*k + j*k)//(q - 1)))\n exp(2π𝑖((i*k + j*k)//(q - 1)))\n exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))\n 0\n\njulia> [conjugacy_class_type(g, 3)]\n1-element Vector{GenericCharacterTables.GenericConjugacyClass}:\n Generic conjugacy class of GL2\n\n\n\n\n\n\n","category":"method"},{"location":"unexported/#Base.show-Tuple{IO, MIME{Symbol(\"text/plain\")}, GenericCharacterTables.Table}","page":"Unexported Functions","title":"Base.show","text":"show(io::IO, t::Table)\n\nDisplay a summary of the generic character table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\njulia> [g]\n1-element Vector{GenericCharacterTables.CharTable}:\n Generic character table GL2\n\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.add_exception!-Tuple{GenericCharacterTables.ParameterExceptions, AbstractAlgebra.Generic.FracFieldElem{AbstractAlgebra.Generic.UnivPoly{Nemo.QQFieldElem, AbstractAlgebra.Generic.MPoly{Nemo.QQFieldElem}}}}","page":"Unexported Functions","title":"GenericCharacterTables.add_exception!","text":"add_exception!(a::ParameterExceptions, exception::UPolyFrac)\n\nInclude exception into a. This also removes all now redundant exceptions from a.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.is_integer-Tuple{AbstractAlgebra.Generic.FracFieldElem{AbstractAlgebra.Generic.UnivPoly{Nemo.QQFieldElem, AbstractAlgebra.Generic.MPoly{Nemo.QQFieldElem}}}}","page":"Unexported Functions","title":"GenericCharacterTables.is_integer","text":"is_integer(x::UPolyFrac)\n\nReturn if x represents an integer.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.is_restriction-Tuple{GenericCharacterTables.ParameterExceptions}","page":"Unexported Functions","title":"GenericCharacterTables.is_restriction","text":"is_restriction(x::ParameterExceptions)\n\nReturn if x actually restricts something.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.merge-Tuple{GenericCharacterTables.ParameterExceptions, GenericCharacterTables.ParameterExceptions}","page":"Unexported Functions","title":"GenericCharacterTables.merge","text":"merge(x::ParameterExceptions, y::ParameterExceptions)\n\nReturn a new collection of parameter exceptions composed of x and y where all redundant exceptions are omitted.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.nesum-Tuple{GenericCharacterTables.GenericCyclo, Int64, Int64, Union{Int64, AbstractAlgebra.Generic.UnivPoly{Nemo.QQFieldElem, AbstractAlgebra.Generic.MPoly{Nemo.QQFieldElem}}}}","page":"Unexported Functions","title":"GenericCharacterTables.nesum","text":"nesum(a::GenericCyclo, var::Int64, lower::Int64, upper::Union{Int64,UPoly})\n\nReturn the sum of a, from var=lower to upper as GenericCycloFrac using the closed formular for geometric sums. If this is not possible an exception will be thrown.\n\nExamples\n\njulia> R = universal_polynomial_ring(QQ; cached=false);\n\njulia> q = gen(R, \"q\");\n\njulia> S = generic_cyclotomic_ring(R);\n\njulia> i, = gens(R, [\"i\"]);\n\njulia> a = S(Dict(1//(q-1)*i => R(1)))\nexp(2π𝑖(i//(q - 1)))\n\njulia> GenericCharacterTables.nesum(a, i, 1, q-1)\n0\nWith exceptions:\n 1 ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.shift_char_parameters-Tuple{GenericCharacterTables.CharTable, Union{GenericCharacterTables.GenericCyclo, GenericCharacterTables.GenericCycloFrac, GenericCharacterTables.Parameters}, Int64}","page":"Unexported Functions","title":"GenericCharacterTables.shift_char_parameters","text":"shift_char_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)\n\nReplace all character parameters of t in a by their counterparts suffixed with steps.\n\nThis is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.shift_class_parameters-Tuple{GenericCharacterTables.CharTable, Union{GenericCharacterTables.GenericCyclo, GenericCharacterTables.GenericCycloFrac, GenericCharacterTables.Parameters}, Int64}","page":"Unexported Functions","title":"GenericCharacterTables.shift_class_parameters","text":"shift_class_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)\n\nReplace all class parameters of t in a by their counterparts suffixed with steps.\n\nThis is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.\n\n\n\n\n\n","category":"method"},{"location":"unexported/#GenericCharacterTables.shrink-Tuple{GenericCharacterTables.GenericCycloFrac}","page":"Unexported Functions","title":"GenericCharacterTables.shrink","text":"shrink(a::GenericCycloFrac{<:NfPoly})\n\nRemove exceptions from a that follow from the others. And try to simplify the representation of a.\n\n\n\n\n\n","category":"method"},{"location":"book/","page":"An extended example","title":"An extended example","text":"CurrentModule = GenericCharacterTables\nDocTestSetup = :(using GenericCharacterTables, Oscar)","category":"page"},{"location":"book/#An-extended-example","page":"An extended example","title":"An extended example","text":"","category":"section"},{"location":"book/","page":"An extended example","title":"An extended example","text":"The following is based on an example in [OSCAR], which in turn is based on Section 5.3 of [GHLMP96]. To fully understand what is going on we strongly recommend to read the latter source concurrently with the present text.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"To start we load the generic character table for mathrmSL_3(q) with qnotequiv 1pmod 3. To learn about the origin of the table, we could enter print(info(T)).","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> T = generic_character_table(\"SL3.n1\")\nGeneric character table SL3.n1\n of order q^8 - q^6 - q^5 + q^3\n with 8 irreducible character types\n with 8 class types\n with parameters (a, b, m, n)","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"As we can see this table has four parameters in addition to q. The entries of the table are “generalized cyclotomics”, that is, linear combinations over mathbbQ(q) of symbolic “roots of unity” depending on the parameters listed above.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> T[4,4]\n(q + 1)*exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((-2*a*n)//(q - 1)))","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Denoting row 4 of the table by chi_4, we note that is not a single character, but a character type, describing a whole family of characters.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> χ₄ = T[4]\nGeneric character of SL3.n1\n with parameters\n n ∈ {1,…, q - 1} except n ∈ (q - 1)ℤ\n of degree q^2 + q + 1\n with values\n q^2 + q + 1\n q + 1\n 1\n (q + 1)*exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((-2*a*n)//(q - 1)))\n exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((-2*a*n)//(q - 1)))\n exp(2π𝑖((a*n)//(q - 1))) + exp(2π𝑖((b*n)//(q - 1))) + exp(2π𝑖((-a*n - b*n)//(q - 1)))\n exp(2π𝑖((a*n)//(q - 1)))\n 0","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"With these generic characters, we can compute norms, scalar products, and more. For this demonstration we tensor the second character type chi_2 with itself.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> h = T[2] * T[2]\nGeneric character of SL3.n1\n of degree q^4 + 2*q^3 + q^2\n with values\n q^4 + 2*q^3 + q^2\n q^2\n 0\n q^2 + 2*q + 1\n 1\n 4\n 0\n 1","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"We may now attempt to decompose this character type h by computing its scalar product with the irreducible character types. This returns a “generic” scalar product, plus a (possibly empty) list of parameter exceptions for which the general result may not hold. For example:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> scalar_product(T[4], h)\n0\nWith exceptions:\n 2*n1 ∈ (q - 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"This scalar product is 0 except when q-1 divides 2n_1, where n_1 indicates the value of the parameter n for the first factor in the scalar product (i.e. the character type chi_4). For a “generic decomposition” we need to compute all the scalar products and exceptions.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> for i in 1:8 println(\"<$i, h> = \", scalar_product(T[i], h)) end\n<1, h> = 1\n<2, h> = 2\n<3, h> = 2\n<4, h> = 0\nWith exceptions:\n 2*n1 ∈ (q - 1)ℤ\n<5, h> = 0\nWith exceptions:\n 2*n1 ∈ (q - 1)ℤ\n<6, h> = 0\nWith exceptions:\n 2*m1 - n1 ∈ (q - 1)ℤ\n m1 - 2*n1 ∈ (q - 1)ℤ\n m1 + n1 ∈ (q - 1)ℤ\n m1 ∈ (q - 1)ℤ\n m1 - n1 ∈ (q - 1)ℤ\n n1 ∈ (q - 1)ℤ\n<7, h> = 0\nWith exceptions:\n n1 ∈ (q - 1)ℤ\n<8, h> = 0\nWith exceptions:\n q*n1 ∈ (q^2 + q + 1)ℤ\n n1 ∈ (q^2 + q + 1)ℤ\n q*n1 + n1 ∈ (q^2 + q + 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"This suggest a decomposition of chi_2otimeschi_2 into chi_1+2chi_2+2chi_3 “in general”. But comparing the respective degrees, we notice a discrepancy:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> degree(linear_combination([1,2,2],[T[1],T[2],T[3]]))\n2*q^3 + 2*q^2 + 2*q + 1\n\njulia> degree(h)\nq^4 + 2*q^3 + q^2","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"To resolve this, we need to work through the exceptions. Recall that earlier we saw that langlechi_4chi_2^2rangle=0 except when q-1 divides 2n_1, where n_1 was the value of the parameter n used in chi_4. Further restrictions apply to n:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> parameters(T[4])\nn ∈ {1,…, q - 1} except n ∈ (q - 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"So n may take on any value between 1 and q-1 not divisible by q-1. Hence the only possible exception is n=(q-1)2 which can only occur if q is odd. It thus makes sense to consider q odd and q even separately.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"We demonstrate this for q even. Then langlechi_4chi_2^2rangle=0 and with a similar argument langlechi_5chi_2^2rangle=0. We now construct a copy of the table but with the congruence equation qequiv 0pmod 2 applied:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> T2 = set_congruence(T; remainder=0, modulus=2);","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Inspecting the list of exceptions for langlechi_6chi_2^2rangle, the first occurs when q-1 divides m+n. To study this case we specialize m for character type 6:","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> (q, (a, b, m, n)) = parameters(T2);\n\njulia> x = parameter(T2, \"x\"); # create an additional \"free\" variable\n\njulia> s = specialize(T2[6], m, -n + (q-1)*x); # force m = -n (mod q-1)","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Recomputing the scalar product now gives a new result. Note that we have to map the character type h into the new table for this to work.","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"julia> scalar_product(s, T2(h))\n1\nWith exceptions:\n 3*n1 ∈ (q - 1)ℤ\n 2*n1 ∈ (q - 1)ℤ","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"The exceptions both cannot occur as q is even and the table we are considering is only defined for qnotequiv 1pmod 3. By working through the other possible exceptions and irreducible character types, and handling duplicates, one finally obtains","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"chi_2^2 = chi_1+2chi_2+2chi_3\n +frac12sum_n=1^q-2 chi_6(nq-1-n)\n +frac12sum_n=1^q chi_7(n(q-1))","category":"page"},{"location":"book/","page":"An extended example","title":"An extended example","text":"Where chi_6(nq-1-n) indicates that the 6th character in the table T2 is a family on two parameters: n and q-1-n, while chi_7 depends on only one, namely n(q-1). A similar result can be obtained for odd q albeit with a few more cases that need to be dealt with, but all in essentially the same manner.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"CurrentModule = GenericCharacterTables\nDocTestSetup = :(using GenericCharacterTables, Oscar)","category":"page"},{"location":"characters/#Character-types","page":"Character types","title":"Character types","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"A character type is a family of characters which are indexed by a set of parameters, together with ranges of admissible values for each parameters, and a set of excluded parameter values. The characters in a character type share many properties, e.g. they all have the same degree.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"Since \"types\" already have a very specific meaning in Julia (and other programming languages), we instead sometimes refer to character types as \"generic characters\". In particular the Julia types we use to represent character types are called AbstractGenericCharacter, GenericCharacter and SimpleGenericCharacter.","category":"page"},{"location":"characters/#Properties","page":"Character types","title":"Properties","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"number_of_character_types\nnumber_of_characters(char::GenericCharacter)\ndegree(chi::AbstractGenericCharacter)\nparameters(chi::GenericCharacter)\ninfo(char::AbstractGenericCharacter)","category":"page"},{"location":"characters/#GenericCharacterTables.number_of_character_types","page":"Character types","title":"GenericCharacterTables.number_of_character_types","text":"number_of_character_types(t::Table)\n\nReturn the number of character types of table t. This can also be obtained via length(t).\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_character_types(g)\n4\n\n\n\n\n\n\n","category":"function"},{"location":"characters/#GenericCharacterTables.number_of_characters-Tuple{GenericCharacterTables.GenericCharacter}","page":"Character types","title":"GenericCharacterTables.number_of_characters","text":"number_of_characters(char::GenericCharacter)\n\nReturn the number of characters in the generic character char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_characters(g[1])\nq - 1\n\n\n\n\n\n\n","category":"method"},{"location":"characters/#AbstractAlgebra.degree-Tuple{GenericCharacterTables.AbstractGenericCharacter}","page":"Character types","title":"AbstractAlgebra.degree","text":"degree(char::AbstractGenericCharacter)\n\nReturn the character degree of the characters in char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> degree(g[3])\nq + 1\n\n\n\n\n\n\n","category":"method"},{"location":"characters/#GenericCharacterTables.parameters-Tuple{GenericCharacterTables.GenericCharacter}","page":"Character types","title":"GenericCharacterTables.parameters","text":"parameters(char::AbstractGenericCharacter)\n\nReturn the parameters of the character type char. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g[3])\nk ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"characters/#GenericCharacterTables.info-Tuple{GenericCharacterTables.AbstractGenericCharacter}","page":"Character types","title":"GenericCharacterTables.info","text":"info(char::AbstractGenericCharacter)\n\nReturn the infolists of the character type char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> info(g[2])\n2-element Vector{Any}:\n Any[1, 1]\n Any[\"A_1\", [1, 1]]\n\n\n\n\n\n\n","category":"method"},{"location":"characters/#Iteration","page":"Character types","title":"Iteration","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"Tables implement Julia's iteration interface to iterate over values stored in character types. For a character type ct,","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"length(ct) returns the number of values in the character type (which is equal to the number of class types s in the table), and\nct[i] returns the ith value of the character type.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"julia> g=generic_character_table(\"GL2\");\n\njulia> ct = g[3]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ\n of degree q + 1\n with values\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))\n 0\n\njulia> collect(ct)\n4-element Vector{GenericCharacterTables.GenericCyclo}:\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + i*k)//(q - 1)))\n exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))\n 0","category":"page"},{"location":"characters/#Constructing-new-character-types","page":"Character types","title":"Constructing new character types","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"The immediate way to obtain a character type object is to get it from a table T via indexing, i.e., as T[i] for some index i.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"In addition, there are a few ways to construct new character types.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"tensor_product(char1::GenericCharacter, char2::GenericCharacter)\ntensor_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: PolyRingElem\nlinear_combination\nomega","category":"page"},{"location":"characters/#Hecke.tensor_product-Tuple{GenericCharacterTables.GenericCharacter, GenericCharacterTables.GenericCharacter}","page":"Character types","title":"Hecke.tensor_product","text":"tensor_product(char1::GenericCharacter, char2::GenericCharacter)\n\nReturn the tensor product of the character types char1 and char2. This can also be obtained via char1 * char2.\n\nExamples\n\njulia> g = generic_character_table(\"GL2\");\n\njulia> tensor_product(g[1], g[2])\nGeneric character of GL2\n with parameters\n kt1 ∈ {1,…, q - 1}, kt2 ∈ {1,…, q - 1}\n of degree q\n with values\n q*exp(2π𝑖((2*i*kt1 + 2*i*kt2)//(q - 1)))\n 0\n exp(2π𝑖((i*kt1 + i*kt2 + j*kt1 + j*kt2)//(q - 1)))\n (-1)*exp(2π𝑖((i*kt1 + i*kt2)//(q - 1)))\n\n\n\n\n\n","category":"method"},{"location":"characters/#Hecke.tensor_product-Union{Tuple{T}, Tuple{GenericCharacterTables.SimpleGenericCharacter{T}, GenericCharacterTables.SimpleGenericCharacter{T}}} where T<:AbstractAlgebra.PolyRingElem","page":"Character types","title":"Hecke.tensor_product","text":"tensor_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T<:PolyRingElem\n\nReturn the tensor product of the character types char1 and char2. This can also be obtained via char1 * char2.\n\nExamples\n\njulia> g = green_function_table(\"GL3\");\n\njulia> tensor_product(g[1],g[2])\nGeneric character of GL3\n of degree -q^6 - 2*q^5 - 2*q^4 + 2*q^2 + 2*q + 1\n with values\n -q^6 - 2*q^5 - 2*q^4 + 2*q^2 + 2*q + 1\n 2*q + 1\n 1\n\n\n\n\n\n","category":"method"},{"location":"characters/#GenericCharacterTables.linear_combination","page":"Character types","title":"GenericCharacterTables.linear_combination","text":"linear_combination(coeffs::Vector{Int64}, chars::Vector{<:GenericCharacter})\n\nReturn the linear combination of the character types chars with coefficients coeffs.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> linear_combination([5,1],[g[1],g[2]])\nGeneric character of GL2\n with parameters\n kl1 ∈ {1,…, q - 1}, kl2 ∈ {1,…, q - 1}\n of degree q + 5\n with values\n (5)*exp(2π𝑖((2*i*kl1)//(q - 1))) + q*exp(2π𝑖((2*i*kl2)//(q - 1)))\n (5)*exp(2π𝑖((2*i*kl1)//(q - 1)))\n exp(2π𝑖((i*kl2 + j*kl2)//(q - 1))) + (5)*exp(2π𝑖((i*kl1 + j*kl1)//(q - 1)))\n (-1)*exp(2π𝑖((i*kl2)//(q - 1))) + (5)*exp(2π𝑖((i*kl1)//(q - 1)))\n\n\n\n\n\nlinear_combination(coeffs::Vector{Int64}, chars::Vector{SimpleGenericCharacter{T}}) where T <: NfPoly\n\nReturn the linear combination of the character types chars with coefficients coeffs.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> linear_combination([5,1],[g[1],g[2]])\nGeneric character of GL3\n of degree 4*q^3 + 10*q^2 + 10*q + 6\n with values\n 4*q^3 + 10*q^2 + 10*q + 6\n 10*q + 6\n 6\n\n\n\n\n\n","category":"function"},{"location":"characters/#GenericCharacterTables.omega","page":"Character types","title":"GenericCharacterTables.omega","text":"omega(char::GenericCharacter)\n\nReturn the (generic) central character of the character type char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> omega(g[1])\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}\n of degree 1\n with values\n exp(2π𝑖((2*i*k)//(q - 1)))\n (q^2 - 1)*exp(2π𝑖((2*i*k)//(q - 1)))\n (q^2 + q)*exp(2π𝑖((i*k + j*k)//(q - 1)))\n (q^2 - q)*exp(2π𝑖((i*k)//(q - 1)))\n\n\n\n\n\n\nomega(char::SimpleGenericCharacter{T}) where T <: NfPoly\n\nReturn the (generic) central character of the character type char.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> omega(g[1])\nGeneric character of GL3\n of degree 1\n with values\n 1\n 2*q^2 - q - 1\n q^3 - 2*q^2 + q\n\n\n\n\n\n","category":"function"},{"location":"characters/#Norms-and-scalar-products","page":"Character types","title":"Norms and scalar products","text":"","category":"section"},{"location":"characters/","page":"Character types","title":"Character types","text":"GenericCharacterTables allows you to compute norms and scalar products of character types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.","category":"page"},{"location":"characters/","page":"Character types","title":"Character types","text":"norm(char::GenericCharacter)\nnorm(char::SimpleGenericCharacter{T}) where T <: NfPoly\nscalar_product(char1::GenericCharacter, char2::GenericCharacter)\nscalar_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: NfPoly","category":"page"},{"location":"characters/#LinearAlgebra.norm-Tuple{GenericCharacterTables.GenericCharacter}","page":"Character types","title":"LinearAlgebra.norm","text":"norm(char::GenericCharacter)\n\nReturn the norm of the character type char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> norm(g[1])\n1\n\n\n\n\n\n","category":"method"},{"location":"characters/#LinearAlgebra.norm-Union{Tuple{GenericCharacterTables.SimpleGenericCharacter{T}}, Tuple{T}} where T<:Union{AbstractAlgebra.PolyRingElem{Nemo.AbsSimpleNumFieldElem}, AbstractAlgebra.PolyRingElem{Nemo.QQFieldElem}}","page":"Character types","title":"LinearAlgebra.norm","text":"norm(char::SimpleGenericCharacter{T}) where T <: NfPoly\n\nReturn the norm of the character type char.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> norm(g[1])\n6//(q^3 - 3*q^2 + 3*q - 1)\n\n\n\n\n\n","category":"method"},{"location":"characters/#Oscar.scalar_product-Tuple{GenericCharacterTables.GenericCharacter, GenericCharacterTables.GenericCharacter}","page":"Character types","title":"Oscar.scalar_product","text":"scalar_product(char1::GenericCharacter, char2::GenericCharacter)\n\nReturn the scalar product between the character types char1 and char2.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> scalar_product(g[3],g[2])\n0\nWith exceptions:\n l1 + k1 - 2*k2 ∈ (q - 1)ℤ\n l1 - k2 ∈ (q - 1)ℤ\n k1 - k2 ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"characters/#Oscar.scalar_product-Union{Tuple{T}, Tuple{GenericCharacterTables.SimpleGenericCharacter{T}, GenericCharacterTables.SimpleGenericCharacter{T}}} where T<:Union{AbstractAlgebra.PolyRingElem{Nemo.AbsSimpleNumFieldElem}, AbstractAlgebra.PolyRingElem{Nemo.QQFieldElem}}","page":"Character types","title":"Oscar.scalar_product","text":"scalar_product(char1::SimpleGenericCharacter{T}, char2::SimpleGenericCharacter{T}) where T <: NfPoly\n\nReturn the scalar product between the character types char1 and char2.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> scalar_product(g[1],g[2])\n0\n\n\n\n\n\n","category":"method"},{"location":"modify/","page":"Specializing parameters","title":"Specializing parameters","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"modify/#Specializing-parameters","page":"Specializing parameters","title":"Specializing parameters","text":"","category":"section"},{"location":"modify/","page":"Specializing parameters","title":"Specializing parameters","text":"Sometimes one likes to specify some of the free variables in the tables to simplify the often very complicated values a bit.","category":"page"},{"location":"modify/","page":"Specializing parameters","title":"Specializing parameters","text":"set_congruence\nspecialize","category":"page"},{"location":"modify/#GenericCharacterTables.set_congruence","page":"Specializing parameters","title":"GenericCharacterTables.set_congruence","text":"set_congruence(x::CharTable, congruence::Tuple{ZZRingElem, ZZRingElem})\n\nReturn 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.\n\n\n\n\n\nset_congruence(x::CharTable; remainder::Union{Int, ZZRingElem}, modulus::Union{Int, ZZRingElem})\n\nReturn 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.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\")\nGeneric character table GL2\n of order q^4 - q^3 - q^2 + q\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\njulia> set_congruence(g; remainder=0, modulus=2)\nGeneric character table GL2*\n of order q^4 - q^3 - q^2 + q\n restricted to q congruent to 0 modulo 2\n with 4 irreducible character types\n with 4 class types\n with parameters (i, j, l, k)\n\n\n\n\n\n","category":"function"},{"location":"modify/#GenericCharacterTables.specialize","page":"Specializing parameters","title":"GenericCharacterTables.specialize","text":"specialize(class::GenericConjugacyClass, var::UPoly, expr::RingElement)\n\nReturn the generic conjugacy class where the parameter var is replaced with expr in class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> conjugacy_class_type(g, 1)\nGeneric conjugacy class of GL2\n with parameters \n i ∈ {1,…, q - 1}\n of order 1\n with values\n exp(2π𝑖((2*i*k)//(q - 1)))\n q*exp(2π𝑖((2*i*k)//(q - 1)))\n (q + 1)*exp(2π𝑖((i*l + i*k)//(q - 1)))\n (q - 1)*exp(2π𝑖((i*k)//(q - 1)))\n\njulia> q,(i,j,l,k) = parameters(g);\n\njulia> specialize(conjugacy_class_type(g, 1), i, q)\nGeneric conjugacy class of GL2\n with parameters \n i ∈ {1,…, q - 1}, substitutions: i = q\n of order 1\n with values\n exp(2π𝑖((2*k)//(q - 1)))\n q*exp(2π𝑖((2*k)//(q - 1)))\n (q + 1)*exp(2π𝑖((l + k)//(q - 1)))\n (q - 1)*exp(2π𝑖(k//(q - 1)))\n\n\n\n\n\nspecialize(char::GenericCharacter, var::UPoly, expr::RingElement)\n\nReturn the generic character where the parameter var is replaced with expr in char.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> g[1]\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}\n of degree 1\n with values\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((2*i*k)//(q - 1)))\n exp(2π𝑖((i*k + j*k)//(q - 1)))\n exp(2π𝑖((i*k)//(q - 1)))\n\njulia> q,(i,j,l,k) = parameters(g);\n\njulia> specialize(g[1], i, q)\nGeneric character of GL2\n with parameters\n k ∈ {1,…, q - 1}, substitutions: i = q\n of degree 1\n with values\n exp(2π𝑖((2*k)//(q - 1)))\n exp(2π𝑖((2*k)//(q - 1)))\n exp(2π𝑖((j*k + k)//(q - 1)))\n exp(2π𝑖(k//(q - 1)))\n\n\n\n\n\n\n","category":"function"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"classes/#Conjugacy-class-types","page":"Conjugacy class types","title":"Conjugacy class types","text":"","category":"section"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"A class type is a family of conjugacy classes which are indexed by a set of parameters, together with ranges of admissible values for each parameters, and a set of excluded parameter values.","category":"page"},{"location":"classes/#Properties","page":"Conjugacy class types","title":"Properties","text":"","category":"section"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"number_of_conjugacy_class_types\nnumber_of_conjugacy_classes(t::Table)\nnumber_of_conjugacy_classes(class::GenericConjugacyClass)\nnumber_of_conjugacy_classes(class::SimpleGenericConjugacyClass)\nnumber_of_conjugacy_classes(t::Table, class::Int64)\norder(class::AbstractGenericConjugacyClass)\norder(t::Table, class::Int64)\ncentralizer_order\nparameters(class::GenericConjugacyClass)\nparameters(class::SimpleGenericConjugacyClass)\nparameters(t::Table, class::Int64)\ninfo(class::GenericConjugacyClass)\ninfo(class::SimpleGenericConjugacyClass)\ninfo(t::Table, class::Int64)","category":"page"},{"location":"classes/#GenericCharacterTables.number_of_conjugacy_class_types","page":"Conjugacy class types","title":"GenericCharacterTables.number_of_conjugacy_class_types","text":"number_of_conjugacy_class_types(t::Table)\n\nReturn the number of conjugacy class types of table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_conjugacy_class_types(g)\n4\n\n\n\n\n\n\n","category":"function"},{"location":"classes/#Oscar.number_of_conjugacy_classes-Tuple{GenericCharacterTables.Table}","page":"Conjugacy class types","title":"Oscar.number_of_conjugacy_classes","text":"number_of_conjugacy_classes(t::Table)\n\nReturn the number of conjugacy classes of table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_conjugacy_classes(g)\nq^2 - 1\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.number_of_conjugacy_classes-Tuple{GenericCharacterTables.GenericConjugacyClass}","page":"Conjugacy class types","title":"Oscar.number_of_conjugacy_classes","text":"number_of_conjugacy_classes(class::GenericConjugacyClass)\n\nReturn the number of conjugacy classes in class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_conjugacy_classes(conjugacy_class_type(g, 1))\nq - 1\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.number_of_conjugacy_classes-Tuple{GenericCharacterTables.SimpleGenericConjugacyClass}","page":"Conjugacy class types","title":"Oscar.number_of_conjugacy_classes","text":"number_of_conjugacy_classes(class::SimpleGenericConjugacyClass)\n\nReturn the number of conjugacy classes in class.\n\nExamples\n\njulia> g=green_function_table(\"GL2\");\n\njulia> number_of_conjugacy_classes(conjugacy_class_type(g, 1))\n1\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.number_of_conjugacy_classes-Tuple{GenericCharacterTables.Table, Int64}","page":"Conjugacy class types","title":"Oscar.number_of_conjugacy_classes","text":"number_of_conjugacy_classes(t::Table, class::Int64)\n\nReturn the number of conjugacy classes in the class type class of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> number_of_conjugacy_classes(g, 1)\nq - 1\n\n\n\n\n\n","category":"method"},{"location":"classes/#AbstractAlgebra.order-Tuple{GenericCharacterTables.AbstractGenericConjugacyClass}","page":"Conjugacy class types","title":"AbstractAlgebra.order","text":"order(class::AbstractGenericConjugacyClass)\n\nReturn the order of the conjugacy classes in class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> order(conjugacy_class_type(g, 3))\nq^2 + q\n\n\n\n\n\n","category":"method"},{"location":"classes/#AbstractAlgebra.order-Tuple{GenericCharacterTables.Table, Int64}","page":"Conjugacy class types","title":"AbstractAlgebra.order","text":"order(t::Table, class::Int64)\n\nReturn the order of the conjugacy classes in the class type class of t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> order(g, 3)\nq^2 + q\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.centralizer_order","page":"Conjugacy class types","title":"GenericCharacterTables.centralizer_order","text":"centralizer_order(class::AbstractGenericConjugacyClass)\n\nReturn the order of the centralizer of the class type class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> centralizer_order(conjugacy_class_type(g, 1))\nq^4 - q^3 - q^2 + q\n\n\n\n\n\n\ncentralizer_order(t::Table, class::Int64)\n\nReturn the order of the centralizer of the class type class of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> centralizer_order(g, 1)\nq^4 - q^3 - q^2 + q\n\n\n\n\n\n\n","category":"function"},{"location":"classes/#GenericCharacterTables.parameters-Tuple{GenericCharacterTables.GenericConjugacyClass}","page":"Conjugacy class types","title":"GenericCharacterTables.parameters","text":"parameters(class::GenericConjugacyClass)\n\nReturn the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(conjugacy_class_type(g, 3))\ni ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.parameters-Tuple{GenericCharacterTables.SimpleGenericConjugacyClass}","page":"Conjugacy class types","title":"GenericCharacterTables.parameters","text":"parameters(class::SimpleGenericConjugacyClass)\n\nReturn the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"uniGL2\");\n\njulia> parameters(conjugacy_class_type(g, 1))\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.parameters-Tuple{GenericCharacterTables.Table, Int64}","page":"Conjugacy class types","title":"GenericCharacterTables.parameters","text":"parameters(t::Table, class::Int64)\n\nReturn the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> parameters(g, 3)\ni ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.info-Tuple{GenericCharacterTables.GenericConjugacyClass}","page":"Conjugacy class types","title":"GenericCharacterTables.info","text":"info(class::AbstractGenericConjugacyClass)\n\nReturn the infolists of the generic conjugacy class class.\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.info-Tuple{GenericCharacterTables.SimpleGenericConjugacyClass}","page":"Conjugacy class types","title":"GenericCharacterTables.info","text":"info(class::AbstractGenericConjugacyClass)\n\nReturn the infolists of the generic conjugacy class class.\n\n\n\n\n\n","category":"method"},{"location":"classes/#GenericCharacterTables.info-Tuple{GenericCharacterTables.Table, Int64}","page":"Conjugacy class types","title":"GenericCharacterTables.info","text":"info(t::Table, class::Int64)\n\nReturn the infolists of the class type class of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> info(g, 1)\n2-element Vector{Any}:\n Any[1, 0]\n Any[\"A_1\", [1, 1]]\n\n\n\n\n\n\n","category":"method"},{"location":"classes/#Norms-and-scalar-products","page":"Conjugacy class types","title":"Norms and scalar products","text":"","category":"section"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"GenericCharacterTables allows you to compute norms and scalar products of class types. The results are correct for all possible combinations of parameters except possibly for those where the additionally returned exceptions apply. Those consist of multivariate polynomials with coefficients in a rational function field and are satisfied if the evaluation of this polynomial is an integer.","category":"page"},{"location":"classes/","page":"Conjugacy class types","title":"Conjugacy class types","text":"norm(class::GenericConjugacyClass)\nnorm(class::SimpleGenericConjugacyClass)\nnorm(t::Table, class::Int64)\nscalar_product(class1::GenericConjugacyClass, class2::GenericConjugacyClass)\nscalar_product(class1::SimpleGenericConjugacyClass, class2::SimpleGenericConjugacyClass)\nscalar_product(t::Table, class1::Int64, class2::Int64)\nclass_multiplication_coefficient(class1::SimpleGenericConjugacyClass, class2::SimpleGenericConjugacyClass, class3::SimpleGenericConjugacyClass)\nclass_multiplication_coefficient(class1::GenericConjugacyClass, class2::GenericConjugacyClass, class3::GenericConjugacyClass)\nclass_multiplication_coefficient(t::Table, class1::Int64, class2::Int64, class3::Int64)","category":"page"},{"location":"classes/#LinearAlgebra.norm-Tuple{GenericCharacterTables.GenericConjugacyClass}","page":"Conjugacy class types","title":"LinearAlgebra.norm","text":"norm(class::GenericConjugacyClass)\n\nReturn the (generic) norm of class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> norm(conjugacy_class_type(g, 2))\n1\n\n\n\n\n\n","category":"method"},{"location":"classes/#LinearAlgebra.norm-Tuple{GenericCharacterTables.SimpleGenericConjugacyClass}","page":"Conjugacy class types","title":"LinearAlgebra.norm","text":"norm(class::SimpleGenericConjugacyClass)\n\nReturn the (generic) norm of class.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> norm(conjugacy_class_type(g, 2))\n(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)\n\n\n\n\n\n","category":"method"},{"location":"classes/#LinearAlgebra.norm-Tuple{GenericCharacterTables.Table, Int64}","page":"Conjugacy class types","title":"LinearAlgebra.norm","text":"norm(t::Table, class::Int64)\n\nReturn the (generic) norm of the class type class.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> norm(g,2)\n1\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.scalar_product-Tuple{GenericCharacterTables.GenericConjugacyClass, GenericCharacterTables.GenericConjugacyClass}","page":"Conjugacy class types","title":"Oscar.scalar_product","text":"scalar_product(class1::GenericConjugacyClass, class2::GenericConjugacyClass)\n\nReturn the (generic) scalar product between class1 and class2.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> scalar_product(conjugacy_class_type(g, 3), conjugacy_class_type(g, 2))\n0\nWith exceptions:\n i1 + j1 - 2*i2 ∈ (q - 1)ℤ\n i1 - i2 ∈ (q - 1)ℤ\n j1 - i2 ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.scalar_product-Tuple{GenericCharacterTables.SimpleGenericConjugacyClass, GenericCharacterTables.SimpleGenericConjugacyClass}","page":"Conjugacy class types","title":"Oscar.scalar_product","text":"scalar_product(class1::SimpleGenericConjugacyClass, class2::SimpleGenericConjugacyClass)\n\nReturn the (generic) scalar product between class1 and class2.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> scalar_product(conjugacy_class_type(g, 2), conjugacy_class_type(g, 2))\n(5*q^2 + 2*q + 3)//(q^5 - 2*q^4 + q^3)\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.scalar_product-Tuple{GenericCharacterTables.Table, Int64, Int64}","page":"Conjugacy class types","title":"Oscar.scalar_product","text":"scalar_product(t::Table, class1::Int64, class2::Int64)\n\nReturn the (generic) scalar product between the class types class1 and class2.\n\nExamples\n\njulia> g=generic_character_table(\"GL2\");\n\njulia> scalar_product(g,3,2)\n0\nWith exceptions:\n i1 + j1 - 2*i2 ∈ (q - 1)ℤ\n i1 - i2 ∈ (q - 1)ℤ\n j1 - i2 ∈ (q - 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.class_multiplication_coefficient-Tuple{GenericCharacterTables.SimpleGenericConjugacyClass, GenericCharacterTables.SimpleGenericConjugacyClass, GenericCharacterTables.SimpleGenericConjugacyClass}","page":"Conjugacy class types","title":"Oscar.class_multiplication_coefficient","text":"class_multiplication_coefficient(class1::SimpleGenericConjugacyClass, class2::SimpleGenericConjugacyClass, class3::SimpleGenericConjugacyClass)\n\nReturn the (generic) class multiplication coefficient of class1, class2 and class3.\n\nExamples\n\njulia> g=green_function_table(\"GL3\");\n\njulia> class_multiplication_coefficient(conjugacy_class_type(g, 1), conjugacy_class_type(g, 2), conjugacy_class_type(g, 3))\n(q + 3)//(q^5 - 2*q^4 + q^3)\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.class_multiplication_coefficient-Tuple{GenericCharacterTables.GenericConjugacyClass, GenericCharacterTables.GenericConjugacyClass, GenericCharacterTables.GenericConjugacyClass}","page":"Conjugacy class types","title":"Oscar.class_multiplication_coefficient","text":"class_multiplication_coefficient(class1::GenericConjugacyClass, class2::GenericConjugacyClass, class3::GenericConjugacyClass)\n\nReturn the (generic) class multiplication coefficient of class1, class2 and class3.\n\nExamples\n\njulia> g=generic_character_table(\"SL2.0\");\n\njulia> class_multiplication_coefficient(conjugacy_class_type(g, 2), conjugacy_class_type(g, 2), conjugacy_class_type(g, 4))\nq + 1\nWith exceptions:\n a3 ∈ (q + 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"classes/#Oscar.class_multiplication_coefficient-Tuple{GenericCharacterTables.Table, Int64, Int64, Int64}","page":"Conjugacy class types","title":"Oscar.class_multiplication_coefficient","text":"class_multiplication_coefficient(t::Table, class1::Int64, class2::Int64, class3::Int64)\n\nReturn the (generic) class multiplication coefficient of the class types class1, class2 and class3 of the table t.\n\nExamples\n\njulia> g=generic_character_table(\"SL2.0\");\n\njulia> class_multiplication_coefficient(g,2,2,4)\nq + 1\nWith exceptions:\n a3 ∈ (q + 1)ℤ\n\n\n\n\n\n","category":"method"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"#GenericCharacterTables.jl","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"","category":"section"},{"location":"#About","page":"GenericCharacterTables.jl","title":"About","text":"","category":"section"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"GenericCharacterTables is a library for working with generic character tables. It is based on CHEVIE and aims to provide all its features originally implemented in Maple. It is written in Julia and depends on Nemo and therefore on AbstractAlgebra.","category":"page"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"For the mathematical background, consider that there are many interesting families of finite groups. For example, the matrix groups mathrmGL_n(mathbbF_q) or mathrmSL_n(mathbbF_q), for n1 and q a prime power. These groups have many properties in common. It turns out that for a fixed rank (say n=2) it is possible to parametrize the conjugacy classes and irreducible characters of these group in terms of q, and to write this down into a so-called generic character table. This was first done by Schur for mathrmSL_2(mathbbF_q).","category":"page"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"This package provides code to interact with such generic character tables, and also includes many such tables. The code in this package is based on Maple code included in the CHEVIE project.","category":"page"},{"location":"","page":"GenericCharacterTables.jl","title":"GenericCharacterTables.jl","text":"For more details about the mathematical background, see [GHLMP96].","category":"page"},{"location":"cyclo/","page":"Generic cyclotomics","title":"Generic cyclotomics","text":"CurrentModule = GenericCharacterTables","category":"page"},{"location":"cyclo/#Generic-cyclotomics","page":"Generic cyclotomics","title":"Generic cyclotomics","text":"","category":"section"},{"location":"cyclo/","page":"Generic cyclotomics","title":"Generic cyclotomics","text":"TODO: this file should contain information about generic cyclotomics: what these are, how to work with them; what is and isn't implemented.","category":"page"}] } diff --git a/dev/tables/index.html b/dev/tables/index.html index 68b8534b..f377b741 100644 --- a/dev/tables/index.html +++ b/dev/tables/index.html @@ -4,37 +4,43 @@ of order q^4 - q^3 - q^2 + q with 4 irreducible character types with 4 class types - with parameters (i, j, l, k)source

GenericCharacterTables also provides some tables of Green functions. They can be loaded similarly.

GenericCharacterTables.green_function_tableFunction
green_function_table(x::String)

Return the greenfunction table with name x.

Omitting x will return the names of all importable greenfunctions.

Examples

julia> g = green_function_table("GL2")
+  with parameters (i, j, l, k)
source

GenericCharacterTables also provides some tables of Green functions. They can be loaded similarly.

GenericCharacterTables.green_function_tableFunction
green_function_table(x::String)

Return the greenfunction table with name x.

Omitting x will return the names of all importable greenfunctions.

Examples

julia> g = green_function_table("GL2")
 Generic character table GL2
   of order q^4 - q^3 - q^2 + q
   with 2 irreducible character types
   with 2 class types
-  without parameters
source

Properties

GenericCharacterTables.infoMethod
info(t::Table)

Return the metadata of t in LaTeX format. This usually includes the time the table was first computed.

source
GenericCharacterTables.number_of_charactersMethod
number_of_characters(t::Table)

Return the number of irreducible characters of table t.

Examples

julia> g=generic_character_table("GL2");
+  without parameters
source

Properties

GenericCharacterTables.infoMethod
info(t::Table)

Return the metadata of t in LaTeX format. This usually includes the time the table was first computed.

source
GenericCharacterTables.number_of_charactersMethod
number_of_characters(t::Table)

Return the number of irreducible characters of table t.

Examples

julia> g=generic_character_table("GL2");
 
 julia> number_of_characters(g)
 q^2 - 1
-
source
GenericCharacterTables.number_of_parametersFunction
number_of_parameters(t::CharTable)

Return the number of class and character parameters of the table t.

Examples

julia> g=generic_character_table("GL2");
+
source
GenericCharacterTables.number_of_parametersFunction
number_of_parameters(t::CharTable)

Return the number of class and character parameters of the table t.

Examples

julia> g=generic_character_table("GL2");
 
 julia> number_of_parameters(g)
 4
-
source
GenericCharacterTables.parametersFunction
parameters(t::CharTable, class::Int64)

Return the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
+
source
GenericCharacterTables.parametersFunction
parameters(class::GenericConjugacyClass)

Return the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
+
+julia> parameters(conjugacy_class_type(g, 3))
+i ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ
source
parameters(class::SimpleGenericConjugacyClass)

Return the parameters of the conjugacy class type class. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("uniGL2");
+
+julia> parameters(conjugacy_class_type(g, 1))
+
source
parameters(t::Table, class::Int64)

Return the parameters of the class type class of the table t. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
 
 julia> parameters(g, 3)
 i ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ
-
source
parameters(t::CharTable)

Return all parameters the table t depends on.

Examples

julia> g=generic_character_table("GL2");
+
source
parameters(t::CharTable)

Return all parameters the table t depends on.

Examples

julia> g=generic_character_table("GL2");
 
 julia> parameters(g)
 (q, (i, j, l, k))
-
source
parameters(char::AbstractGenericCharacter)

Return the parameters of the character type char. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
+
source
parameters(char::AbstractGenericCharacter)

Return the parameters of the character type char. This includes the parameter names, ranges and exceptions.

Examples

julia> g=generic_character_table("GL2");
 
 julia> parameters(g[3])
-k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ
source
AbstractAlgebra.orderMethod
order(t::Table)

Return the order of the table t.

Examples

julia> g=generic_character_table("GL2");
+k ∈ {1,…, q - 1}, l ∈ {1,…, q - 1} except -l + k ∈ (q - 1)ℤ
source
AbstractAlgebra.orderMethod
order(t::Table)

Return the order of the table t.

Examples

julia> g=generic_character_table("GL2");
 
 julia> order(g)
-q^4 - q^3 - q^2 + q
source

Iteration

Tables implement Julia's iteration interface to iterate over the irreducible character types stored in the table. For a table T,

For example we can use this to compute the order of the underlying group type. (Of course this can also be checked via order, which retrieves a precomputed value.)

julia> g=generic_character_table("GL2");
+q^4 - q^3 - q^2 + q
source

Iteration

Tables implement Julia's iteration interface to iterate over the irreducible character types stored in the table. For a table T,

For example we can use this to compute the order of the underlying group type. (Of course this can also be checked via order, which retrieves a precomputed value.)

julia> g=generic_character_table("GL2");
 
 julia> sum(number_of_characters(c)*degree(c)^2 for c in g)
 q^4 - q^3 - q^2 + q
 
 julia> order(g)
-q^4 - q^3 - q^2 + q
+q^4 - q^3 - q^2 + q diff --git a/dev/unexported/index.html b/dev/unexported/index.html index 8e129b2d..df2868af 100644 --- a/dev/unexported/index.html +++ b/dev/unexported/index.html @@ -4,7 +4,7 @@ of order q^4 - q^3 - q^2 + q with 4 irreducible character types with 4 class types - with parameters (i, j, l, k)source
GenericCharacterTables.CharTableMethod
(t::CharTable)(c::GenericCharacter)

Return c as a generic character of t. This will only work if t is a version of the parent table of c with a more restricted congruence.

source
GenericCharacterTables.GenericCharacterType
GenericCharacter <: AbstractGenericCharacter

The type for generic characters. These are the generic characters used in CharTable.

Examples

julia> g=generic_character_table("GL2");
+  with parameters (i, j, l, k)
source
GenericCharacterTables.CharTableMethod
(t::CharTable)(c::GenericCharacter)

Return c as a generic character of t. This will only work if t is a version of the parent table of c with a more restricted congruence.

source
GenericCharacterTables.GenericCharacterType
GenericCharacter <: AbstractGenericCharacter

The type for generic characters. These are the generic characters used in CharTable.

Examples

julia> g=generic_character_table("GL2");
 
 julia> g[1]
 Generic character of GL2
@@ -15,14 +15,14 @@
     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)))
source
GenericCharacterTables.GenericCycloType
GenericCyclo <: RingElem

The type for generic cyclotomic numbers.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
+    exp(2π𝑖((i*k)//(q - 1)))
source
GenericCharacterTables.GenericConjugacyClassType
GenericConjugacyClass <: AbstractGenericConjugacyClass

The type for generic conjugacy classes. These are the generic conjugacy classes used in CharTable.

source
GenericCharacterTables.GenericCycloType
GenericCyclo <: RingElem

The type for generic cyclotomic numbers.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
 
 julia> q = gen(R, "q");
 
 julia> S = generic_cyclotomic_ring(R);
 
 julia> S(q; exponent=1//(q-1))
-q*exp(2π𝑖(1//(q - 1)))
source
GenericCharacterTables.GenericCycloFracType
GenericCycloFrac

The type for fractions of generic cyclotomic numbers.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
+q*exp(2π𝑖(1//(q - 1)))
source
GenericCharacterTables.GenericCycloFracType
GenericCycloFrac

The type for fractions of generic cyclotomic numbers.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
 
 julia> q = gen(R, "q");
 
@@ -35,19 +35,19 @@
 q^2*exp(2π𝑖(1//(q^2 - 1)))
 
 julia> a//b
-q*exp(2π𝑖(1//(q - 1)))//(q^2*exp(2π𝑖(1//(q^2 - 1))))
source
GenericCharacterTables.GenericCycloRingType
GenericCycloRing <: Ring

The ring of generic cyclotomic numbers.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
+q*exp(2π𝑖(1//(q - 1)))//(q^2*exp(2π𝑖(1//(q^2 - 1))))
source
GenericCharacterTables.GenericCycloRingType
GenericCycloRing <: Ring

The ring of generic cyclotomic numbers.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
 
 julia> q = gen(R, "q");
 
 julia> S = generic_cyclotomic_ring(R)
 Generic cyclotomic ring
   over Rational field
-  dependent on q
source
GenericCharacterTables.ParameterType
Parameter

A paramter of a generic character or class type unique up to a polynomial modulus. They are used in Parameters.

source
GenericCharacterTables.ParameterExceptionsType
ParameterExceptions

A collection of parameter exceptions used in GenericCycloFrac.

source
GenericCharacterTables.ParameterSubstitutionType
ParameterSubstitution

A substitution of paramters used in Parameters. They are generated by for example specclassparam!.

source
GenericCharacterTables.ParametersType
Parameters

Parameters of generic characters and class types. This is used in GenericCharacter and CharTable and is only of internal use.

source
GenericCharacterTables.SimpleCharTableType
SimpleCharTable{T} <: Table

The type for simple generic character tables. This is used to model generic character tables containing polynomial entries. The type parameter T is the type of the table entries.

Examples

julia> g=generic_character_table("uniGL2")
+  dependent on q
source
GenericCharacterTables.ParameterType
Parameter

A paramter of a generic character or class type unique up to a polynomial modulus. They are used in Parameters.

source
GenericCharacterTables.ParameterExceptionsType
ParameterExceptions

A collection of parameter exceptions used in GenericCycloFrac.

source
GenericCharacterTables.ParameterSubstitutionType
ParameterSubstitution

A substitution of paramters used in Parameters. They are generated by for example specclassparam!.

source
GenericCharacterTables.ParametersType
Parameters

Parameters of generic characters and class types. This is used in GenericCharacter and CharTable and is only of internal use.

source
GenericCharacterTables.SimpleCharTableType
SimpleCharTable{T} <: Table

The type for simple generic character tables. This is used to model generic character tables containing polynomial entries. The type parameter T is the type of the table entries.

Examples

julia> g=generic_character_table("uniGL2")
 Generic character table uniGL2
   of order q^4 - q^3 - q^2 + q
   with 2 irreducible character types
   with 4 class types
-  without parameters
source
GenericCharacterTables.SimpleGenericCharacterType
SimpleGenericCharacter <: AbstractGenericCharacter

The type for simple generic characters. These are the generic characters used in SimpleCharTable.

Examples

julia> g=generic_character_table("uniGL2")
+  without parameters
source
GenericCharacterTables.SimpleGenericCharacterType
SimpleGenericCharacter <: AbstractGenericCharacter

The type for simple generic characters. These are the generic characters used in SimpleCharTable.

Examples

julia> g=generic_character_table("uniGL2")
 Generic character table uniGL2
   of order q^4 - q^3 - q^2 + q
   with 2 irreducible character types
@@ -61,7 +61,7 @@
     q
     0
     1
-    -1
source
AbstractAlgebra.Generic.normal_formMethod
normal_form(f::ZZUPoly, m::Int64)

Return a normal form of f modulo m, such that normal_form(f,m) is equal to normal_form(g,m) if and only if f and g are congruent modulo m.

Examples

julia> R=universal_polynomial_ring(ZZ);
+    -1
source
GenericCharacterTables.SimpleGenericConjugacyClassType
SimpleGenericConjugacyClass <: AbstractGenericConjugacyClass

The type for simple generic conjugacy classes. These are the generic conjugacy classes used in SimpleCharTable.

source
AbstractAlgebra.Generic.normal_formMethod
normal_form(f::ZZUPoly, m::Int64)

Return a normal form of f modulo m, such that normal_form(f,m) is equal to normal_form(g,m) if and only if f and g are congruent modulo m.

Examples

julia> R=universal_polynomial_ring(ZZ);
 
 julia> x=gen(R, :x);
 
@@ -76,7 +76,7 @@
 
 julia> normal_form(4*x^9+x^7-(x^3+4*x),12)
 0
-
source
Base.iszeroMethod
iszero(x::GenericCycloFrac; ignore_exceptions::Bool=false)

Return if x is zero. If ignore_exceptions is true then the exceptions of x will not be considered.

source
Base.showMethod
show(io::IO, c::AbstractGenericCharacter)

Display a summary of the generic character c.

Examples

julia> g=generic_character_table("GL2");
+
source
Base.iszeroMethod
iszero(x::GenericCycloFrac; ignore_exceptions::Bool=false)

Return if x is zero. If ignore_exceptions is true then the exceptions of x will not be considered.

source
Base.showMethod
show(io::IO, c::AbstractGenericCharacter)

Display a summary of the generic character c.

Examples

julia> g=generic_character_table("GL2");
 
 julia> g[3]
 Generic character of GL2
@@ -92,7 +92,23 @@
 julia> [g[3]]
 1-element Vector{GenericCharacterTables.GenericCharacter}:
  Generic character of GL2
-
source
Base.showMethod
show(io::IO, t::Table)

Display a summary of the generic character table t.

Examples

julia> g=generic_character_table("GL2")
+
source
Base.showMethod
show(io::IO, c::AbstractGenericConjugacyClass)

Display a summary of the generic character c.

Examples

julia> g=generic_character_table("GL2");
+
+julia> conjugacy_class_type(g, 3)
+Generic conjugacy class of GL2
+  with parameters 
+    i ∈ {1,…, q - 1}, j ∈ {1,…, q - 1} except i - j ∈ (q - 1)ℤ
+  of order q^2 + q
+  with values
+    exp(2π𝑖((i*k + j*k)//(q - 1)))
+    exp(2π𝑖((i*k + j*k)//(q - 1)))
+    exp(2π𝑖((i*l + j*k)//(q - 1))) + exp(2π𝑖((i*k + j*l)//(q - 1)))
+    0
+
+julia> [conjugacy_class_type(g, 3)]
+1-element Vector{GenericCharacterTables.GenericConjugacyClass}:
+ Generic conjugacy class of GL2
+
source
Base.showMethod
show(io::IO, t::Table)

Display a summary of the generic character table t.

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
@@ -102,7 +118,7 @@
 julia> [g]
 1-element Vector{GenericCharacterTables.CharTable}:
  Generic character table GL2
-
source
GenericCharacterTables.add_exception!Method
add_exception!(a::ParameterExceptions, exception::UPolyFrac)

Include exception into a. This also removes all now redundant exceptions from a.

source
GenericCharacterTables.is_integerMethod
is_integer(x::UPolyFrac)

Return if x represents an integer.

source
GenericCharacterTables.is_restrictionMethod
is_restriction(x::ParameterExceptions)

Return if x actually restricts something.

source
GenericCharacterTables.mergeMethod
merge(x::ParameterExceptions, y::ParameterExceptions)

Return a new collection of parameter exceptions composed of x and y where all redundant exceptions are omitted.

source
GenericCharacterTables.nesumMethod
nesum(a::GenericCyclo, var::Int64, lower::Int64, upper::Union{Int64,UPoly})

Return the sum of a, from var=lower to upper as GenericCycloFrac using the closed formular for geometric sums. If this is not possible an exception will be thrown.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
+
source
GenericCharacterTables.add_exception!Method
add_exception!(a::ParameterExceptions, exception::UPolyFrac)

Include exception into a. This also removes all now redundant exceptions from a.

source
GenericCharacterTables.is_integerMethod
is_integer(x::UPolyFrac)

Return if x represents an integer.

source
GenericCharacterTables.is_restrictionMethod
is_restriction(x::ParameterExceptions)

Return if x actually restricts something.

source
GenericCharacterTables.mergeMethod
merge(x::ParameterExceptions, y::ParameterExceptions)

Return a new collection of parameter exceptions composed of x and y where all redundant exceptions are omitted.

source
GenericCharacterTables.nesumMethod
nesum(a::GenericCyclo, var::Int64, lower::Int64, upper::Union{Int64,UPoly})

Return the sum of a, from var=lower to upper as GenericCycloFrac using the closed formular for geometric sums. If this is not possible an exception will be thrown.

Examples

julia> R = universal_polynomial_ring(QQ; cached=false);
 
 julia> q = gen(R, "q");
 
@@ -116,4 +132,4 @@
 julia> GenericCharacterTables.nesum(a, i, 1, q-1)
 0
 With exceptions:
-  1 ∈ (q - 1)ℤ
source
GenericCharacterTables.shift_char_parametersMethod
shift_char_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)

Replace all character parameters of t in a by their counterparts suffixed with steps.

This is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.

source
GenericCharacterTables.shift_class_parametersMethod
shift_class_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)

Replace all class parameters of t in a by their counterparts suffixed with steps.

This is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.

source
GenericCharacterTables.shrinkMethod
shrink(a::GenericCycloFrac{<:NfPoly})

Remove exceptions from a that follow from the others. And try to simplify the representation of a.

source
+ 1 ∈ (q - 1)ℤsource
GenericCharacterTables.shift_char_parametersMethod
shift_char_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)

Replace all character parameters of t in a by their counterparts suffixed with steps.

This is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.

source
GenericCharacterTables.shift_class_parametersMethod
shift_class_parameters(t::CharTable, a::Union{Parameters,GenericCyclo,GenericCycloFrac}, steps::Int64)

Replace all class parameters of t in a by their counterparts suffixed with steps.

This is done by shifting them steps*number_of_parameters(t) steps further in t.argumentring.

source
GenericCharacterTables.shrinkMethod
shrink(a::GenericCycloFrac{<:NfPoly})

Remove exceptions from a that follow from the others. And try to simplify the representation of a.

source