Cartan Matrices
cartan_matrix — Methodcartan_matrix(fam::Symbol, rk::Int) -> ZZMatrixReturn 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}...) -> ZZMatrixReturn 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) -> BoolChecks 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)
falseThis 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
1This 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) -> ZZMatrixReturn 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.