Cartan Matrices
cartan_matrix
— Methodcartan_matrix(fam::Symbol, rk::Int) -> ZZMatrix
Return 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]
This function is part of the experimental code in Oscar. Please read here for more details.
cartan_matrix
— Methodcartan_matrix(type::Tuple{Symbol,Int}...) -> ZZMatrix
Return 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]
This function is part of the experimental code in Oscar. Please read here for more details.
is_cartan_matrix
— Methodis_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
This function is part of the experimental code in Oscar. Please read here for more details.
cartan_symmetrizer
— Methodcartan_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
This function is part of the experimental code in Oscar. Please read here for more details.
cartan_bilinear_form
— Methodcartan_bilinear_form(gcm::ZZMatrix; check::Bool=true) -> ZZMatrix
Return 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]
This function is part of the experimental code in Oscar. Please read here for more details.
cartan_type
— Methodcartan_type(gcm::ZZMatrix; check::Bool=true) -> Vector{Tuple{Symbol, Int}}
Return 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)
This function is part of the experimental code in Oscar. Please read here for more details.
cartan_type_with_ordering
— Methodcartan_type_with_ordering(gcm::ZZMatrix; check::Bool=true) -> Vector{Tuple{Symbol, Int}}, Vector{Int}
Return 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])
This function is part of the experimental code in Oscar. Please read here for more details.