Cartan Matrices

cartan_matrixMethod
cartan_matrix(fam::Symbol, rk::Int) -> ZZMatrix

Returns the Cartan matrix of finite type, where fam is the family ($A$, $B$, $C$, $D$, $E$, $F$ $G$) and rk is the rank of the associated the root system; for $B$ and $C$ the rank has to be at least 2, for $D$ at least 4. The convention is $(a_{ij}) = (\langle \alpha_i^\vee, \alpha_j \rangle)$ for simple roots $\alpha_i$.

Example

julia> cartan_matrix(:B, 2)
[ 2   -1]
[-2    2]

julia> cartan_matrix(:C, 2)
[ 2   -2]
[-1    2]
source
cartan_matrixMethod
cartan_matrix(type::Tuple{Symbol,Int}...) -> ZZMatrix

Returns a block diagonal matrix of indecomposable Cartan matrices as defined by type. For allowed values see cartan_matrix(fam::Symbol, rk::Int).

Example

julia> cartan_matrix((:A, 2), (:B, 2))
[ 2   -1    0    0]
[-1    2    0    0]
[ 0    0    2   -1]
[ 0    0   -2    2]
source
is_cartan_matrixMethod
is_cartan_matrix(mat::ZZMatrix; generalized::Bool=true) -> Bool

Checks if mat is a generalized Cartan matrix. The keyword argument generalized can be set to false to restrict this to Cartan matrices of finite type.

Example

julia> is_cartan_matrix(ZZ[2 -2; -2 2])
true

julia> is_cartan_matrix(ZZ[2 -2; -2 2]; generalized=false)
false
source
cartan_symmetrizerMethod
cartan_symmetrizer(gcm::ZZMatrix; check::Bool=true) -> Vector{ZZRingElem}

Return a vector $d$ of coprime integers such that $(d_i a_{ij})_{ij}$ is a symmetric matrix, where $a_{ij}$ are the entries of the Cartan matrix gcm. The keyword argument check can be set to false to skip verification whether gcm is indeed a generalized Cartan matrix.

Example

julia> cartan_symmetrizer(cartan_matrix(:B, 2))
2-element Vector{ZZRingElem}:
 2
 1
source
cartan_bilinear_formMethod
cartan_bilinear_form(gcm::ZZMatrix; check::Bool=true) -> ZZMatrix

Returns the matrix of the symmetric bilinear form associated to the Cartan matrix from cartan_symmetrizer. The keyword argument check can be set to false to skip verification whether gcm is indeed a generalized Cartan matrix.

Example

julia> cartan_bilinear_form(cartan_matrix(:B, 2))
[ 4   -2]
[-2    2]
source
cartan_typeMethod
cartan_type(gcm::ZZMatrix; check::Bool=true) -> Vector{Tuple{Symbol, Int}}

Returns the Cartan type of a Cartan matrix gcm (currently only Cartan matrices of finite type are supported). This function is left inverse to cartan_matrix, i.e. in the case of isomorphic types (e.g. $B_2$ and $C_2$) the ordering of the roots does matter (see the example below). The keyword argument check can be set to false to skip verification whether gcm is indeed a Cartan matrix of finite type.

The order of returned components is, in general, not unique and might change between versions. If this function is called with the output of cartan_matrix(type), it will keep the order of type.

Example

julia> cartan_type(ZZ[2 -1; -2 2])
1-element Vector{Tuple{Symbol, Int64}}:
 (:B, 2)

julia> cartan_type(ZZ[2 -2; -1 2])
1-element Vector{Tuple{Symbol, Int64}}:
 (:C, 2)
source
cartan_type_with_orderingMethod
cartan_type_with_ordering(gcm::ZZMatrix; check::Bool=true) -> Vector{Tuple{Symbol, Int}}, Vector{Int}

Returns the Cartan type of a Cartan matrix gcm together with a vector indicating a canonical ordering of the roots in the Dynkin diagram (currently only Cartan matrices of finite type are supported). The keyword argument check can be set to false to skip verification whether gcm is indeed a Cartan matrix of finite type.

The order of returned components and the ordering is, in general, not unique and might change between versions. If this function is called with the output of cartan_matrix(type), it will keep the order of type and the returned ordering will be the identity.

Example

julia> cartan_type_with_ordering(cartan_matrix(:E, 6))
([(:E, 6)], [1, 2, 3, 4, 5, 6])

julia> cartan_type_with_ordering(ZZ[2 0 -1 0; 0 2 0 -2; -2 0 2 0; 0 -1 0 2])
([(:B, 2), (:C, 2)], [1, 3, 2, 4])
source