ulthiel / JuLie.jl

Mathematically sound structures and fast algorithms for things around representation theory, especially algebraic Lie theory and accompanying combinatorics.
GNU General Public License v3.0
6 stars 7 forks source link

Implementation of Universal Enveloping Algebra #38

Open RexWzh opened 1 year ago

RexWzh commented 1 year ago

Hey guys!! @ulthiel @fingolfin I'm Rex from ECNU. I'd like to add the Universal Enveloping algebra to JuLie, but I need some advice before starting. Hope you are interested in this.

Background

Let $L = \bigotimes\limits_{i=1}^n\mathbb{C}.x_i$ be a Lie algebra, then

$$ \begin{align} [x_i,xj] = \sum{k=1}^nN_{ij}^{k}x_k \end{align} $$

where $N_{ij}^{k}$ is the structure constants of $L$ w.r.t the basis ${x_1,\cdots,x_n}$.

Let $\mathcal{U}(L)$ be the universal enveloping algebra of $L$. The PBW basis of $\mathcal{U}(L)$ defined by ${x_1,\cdots,x_n}$ is

$$ \{x_1^{i_1}x_2^{i_2}\cdots x_n^{i_n}|i_1, i_2, \cdots, i_n \geq 0\} $$

Implementation

Here is a sketch of the plan:

  1. Data types

    """
        SCMat{T<:Number}
    
    Structure constants of a Lie algebra.
    """
    struct SCMat{T<:Number}
        dim::Int
        # Matrix{SparseArray}
        mat::AbstractMatrix
    end
    
    """
        LieElement{T<:Number}
    
    An element of the Lie algebra.
    """
    struct LieElement{T<:Number}
        scmat::SCMat{T}
        # vector of coefficients of $\{x_1,\cdots,x_n\}$
        element::Vector{T}
    end
    
    """
        EnvElement{T<:Number}
    
    An element of the universal enveloping algebra.
    """
    struct EnvElement{T<:Number}
        scmat::SCMat{T}
        # NTuple{N, LieElement{T}} where N
        element::Dict{Tuple, T}
    end
  2. Operations

    • +, -, *(Int, LieElement) are just Vector operations
    • The Lie bracket of two LieElements is given by scmat
    • The multiplication of two EnvElements can be reduced to the following case

    $$ (y_1, \cdots, y_r) \cdot (z_1, \cdots, z_s), where\ y_i, z_j\in\{xk\}{k=1}^n $$

    It can then be simplified by the Lie bracket.

Looking for help

I'll be much grateful if there are any suggestions on the implementation.

For example:

Similar implementations in SageMath can be found here. But it costs a lot and is less flexible.


About me: I have some exprience with SageMath and start to learn Julia since last year.

My projects:

I'm quite new to QSCAR.jl, and it would be a great chance for me to know it by contributing to it. Thanks for your time!

ulthiel commented 1 year ago

Thanks! I would need to think a bit more, but probably this should go into OSCAR itself eventually. In CoxeterGroups.jl we probably will deal with Cartan matrices and root systems as well. All this should somehow be compatible, and eventually in OSCAR. I currently don't know how to organize this properly; maybe first CoxeterGroups.jl should be in a beta state. We should keep Geck's paper in mind!

RexWzh commented 1 year ago

Thanks for your reply and for the reference!!

I write a quick demo of operations on Enveloping algebra here to show how it works.

In CoxeterGroups.jl we probably will deal with Cartan matrices and root systems as well. All this should somehow be compatible, and eventually in OSCAR.

Great! I am also interested in other structures, like root systems, but I know few about the algorithm behind them.

Some books I have read:

fingolfin commented 1 year ago

Just to mention, in the Oscar development version there is ongoing work on PBW algebras, mainly exposing the functionality for this in Singular to the Oscar/Julia side. This may be relevant for your work.