# Functions for a monomial basis of highest weight modules

`basis_lie_highest_weight_operators`

— Function`basis_lie_highest_weight_operators(type::Symbol, rank::Int)`

Lists the operators available for a given simple Lie algebra of type `type_rank`

, together with their index. Operators $f_\alpha$ of negative roots are shown as the coefficients of the corresponding positive root. w.r.t. the simple roots $\alpha_i$.

**Example**

```
julia> basis_lie_highest_weight_operators(:B, 2)
4-element Vector{Tuple{Int64, Vector{QQFieldElem}}}:
(1, [1, 0])
(2, [0, 1])
(3, [1, 1])
(4, [1, 2])
```

This function is part of the experimental code in Oscar. Please read here for more details.

`basis_lie_highest_weight`

— Function```
basis_lie_highest_weight(type::Symbol, rank::Int, highest_weight::Vector{Int}; monomial_ordering::Symbol=:degrevlex)
basis_lie_highest_weight(type::Symbol, rank::Int, highest_weight::Vector{Int}, birational_sequence::Vector{Int}; monomial_ordering::Symbol=:degrevlex)
basis_lie_highest_weight(type::Symbol, rank::Int, highest_weight::Vector{Int}, birational_sequence::Vector{Vector{Int}}; monomial_ordering::Symbol=:degrevlex)
```

Computes a monomial basis for the highest weight module with highest weight `highest_weight`

(in terms of the fundamental weights $\omega_i$), for a simple Lie algebra of type `type_rank`

.

If no birational sequence is specified, all operators in the order of `basis_lie_highest_weight_operators`

are used. A birational sequence of type `Vector{Int}`

is a sequence of indices of operators in `basis_lie_highest_weight_operators`

. A birational sequence of type `Vector{Vector{Int}}`

is a sequence of weights in terms of the simple roots $\alpha_i$.

`monomial_ordering`

describes the monomial ordering used for the basis. If this is a weighted ordering, the height of the corresponding root is used as weight.

**Examples**

```
julia> base = basis_lie_highest_weight(:A, 2, [1, 1])
Monomial basis of a highest weight module
of highest weight [1, 1]
of dimension 8
with monomial ordering degrevlex([x1, x2, x3])
over Lie algebra of type A2
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[1, 0]
[0, 1]
[1, 1]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0]
[0, 1]
julia> base = basis_lie_highest_weight(:A, 3, [2, 2, 3]; monomial_ordering = :lex)
Monomial basis of a highest weight module
of highest weight [2, 2, 3]
of dimension 1260
with monomial ordering lex([x1, x2, x3, x4, x5, x6])
over Lie algebra of type A3
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
[1, 1, 0]
[0, 1, 1]
[1, 1, 1]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
julia> base = basis_lie_highest_weight(:A, 2, [1, 0], [1,2,1])
Monomial basis of a highest weight module
of highest weight [1, 0]
of dimension 3
with monomial ordering degrevlex([x1, x2, x3])
over Lie algebra of type A2
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[1, 0]
[0, 1]
[1, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0]
julia> base = basis_lie_highest_weight(:A, 2, [1, 0], [[1,0], [0,1], [1,0]])
Monomial basis of a highest weight module
of highest weight [1, 0]
of dimension 3
with monomial ordering degrevlex([x1, x2, x3])
over Lie algebra of type A2
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[1, 0]
[0, 1]
[1, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0]
julia> base = basis_lie_highest_weight(:C, 3, [1, 1, 1]; monomial_ordering = :lex)
Monomial basis of a highest weight module
of highest weight [1, 1, 1]
of dimension 512
with monomial ordering lex([x1, x2, x3, x4, x5, x6, x7, x8, x9])
over Lie algebra of type C3
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
[1, 1, 0]
[0, 1, 1]
[1, 1, 1]
[0, 2, 1]
[1, 2, 1]
[2, 2, 1]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
[0, 1, 1]
[1, 1, 1]
```

This function is part of the experimental code in Oscar. Please read here for more details.

`basis_lie_highest_weight_ffl`

— Function`basis_lie_highest_weight_ffl(type::Symbol, rank::Int, highest_weight::Vector{Int})`

Computes a monomial basis for the highest weight module with highest weight `highest_weight`

(in terms of the fundamental weights $\omega_i$), for a simple Lie algebra $L$ of type `type_rank`

.

Then the birational sequence used consists of all operators in descening height of the corresponding root.

The monomial ordering is fixed to `degrevlex`

.

**Examples**

```
julia> basis_lie_highest_weight_ffl(:A, 3, [1,1,1])
Monomial basis of a highest weight module
of highest weight [1, 1, 1]
of dimension 64
with monomial ordering degrevlex([x1, x2, x3, x4, x5, x6])
over Lie algebra of type A3
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[1, 1, 1]
[0, 1, 1]
[1, 1, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
```

This function is part of the experimental code in Oscar. Please read here for more details.

`basis_lie_highest_weight_lusztig`

— Function`basis_lie_highest_weight_lusztig(type::Symbol, rank::Int, highest_weight::Vector{Int}, reduced_expression::Vector{Int})`

Computes a monomial basis for the highest weight module with highest weight `highest_weight`

(in terms of the fundamental weights $\omega_i$), for a simple Lie algebra $L$ of type `type_rank`

.

Let $\omega_0 = s_{i_1} \cdots s_{i_N}$ be a reduced expression of the longest element in the Weyl group of $L$ given as indices $[i_1, \dots, i_N]$ in `reduced_expression`

. Then the birational sequence used consists of $\beta_1, \dots, \beta_N$ where $\beta_1 := \alpha_{i_1}$ and \beta*k := s*{i*1} \cdots s*{i*{k-1}} \alpha*{i_k}$ for $k = 2, \dots, N$.

The monomial ordering is fixed to `wdegrevlex`

(weighted degree reverse lexicographic order).

**Examples**

```
julia> base = basis_lie_highest_weight_lusztig(:D, 4, [1,1,1,1], [4,3,2,4,3,2,1,2,4,3,2,1])
Monomial basis of a highest weight module
of highest weight [1, 1, 1, 1]
of dimension 4096
with monomial ordering wdegrevlex([x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12], [1, 1, 3, 2, 2, 1, 5, 4, 3, 3, 2, 1])
over Lie algebra of type D4
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[0, 0, 0, 1]
[0, 0, 1, 0]
[0, 1, 1, 1]
[0, 1, 1, 0]
[0, 1, 0, 1]
[0, 1, 0, 0]
[1, 2, 1, 1]
[1, 1, 1, 1]
[1, 1, 0, 1]
[1, 1, 1, 0]
[1, 1, 0, 0]
[1, 0, 0, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[0, 0, 1, 1]
```

This function is part of the experimental code in Oscar. Please read here for more details.

`basis_lie_highest_weight_nz`

— Function`basis_lie_highest_weight_nz(type::Symbol, rank::Int, highest_weight::Vector{Int}, reduced_expression::Vector{Int})`

Computes a monomial basis for the highest weight module with highest weight `highest_weight`

(in terms of the fundamental weights $\omega_i$), for a simple Lie algebra $L$ of type `type_rank`

.

Let $\omega_0 = s_{i_1} \cdots s_{i_N}$ be a reduced expression of the longest element in the Weyl group of $L$ given as indices $[i_1, \dots, i_N]$ in `reduced_expression`

. Then the birational sequence used consists of $\alpha_{i_1}, \dots, \alpha_{i_N}$.

The monomial ordering is fixed to `degrevlex`

(degree reverse lexicographic order).

**Examples**

```
julia> basis_lie_highest_weight_nz(:C, 3, [1,1,1], [3,2,3,2,1,2,3,2,1])
Monomial basis of a highest weight module
of highest weight [1, 1, 1]
of dimension 512
with monomial ordering degrevlex([x1, x2, x3, x4, x5, x6, x7, x8, x9])
over Lie algebra of type C3
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[0, 0, 1]
[0, 1, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
julia> basis_lie_highest_weight_nz(:A, 4, [1,1,1,1], [4,3,2,1,2,3,4,3,2,3])
Monomial basis of a highest weight module
of highest weight [1, 1, 1, 1]
of dimension 1024
with monomial ordering degrevlex([x1, x2, x3, x4, x5, x6, x7, x8, x9, x10])
over Lie algebra of type A4
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[0, 0, 0, 1]
[0, 0, 1, 0]
[0, 1, 0, 0]
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[0, 0, 1, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[0, 1, 0, 1]
```

This function is part of the experimental code in Oscar. Please read here for more details.

`basis_lie_highest_weight_string`

— Function`basis_lie_highest_weight_string(type::Symbol, rank::Int, highest_weight::Vector{Int}, reduced_expression::Vector{Int})`

`highest_weight`

(in terms of the fundamental weights $\omega_i$), for a simple Lie algebra $L$ of type `type_rank`

.

Let $\omega_0 = s_{i_1} \cdots s_{i_N}$ be a reduced expression of the longest element in the Weyl group of $L$ given as indices $[i_1, \dots, i_N]$ in `reduced_expression`

. Then the birational sequence used consists of $\alpha_{i_1}, \dots, \alpha_{i_N}$.

The monomial ordering is fixed to `neglex`

(negative lexicographic order).

**Examples**

```
julia> basis_lie_highest_weight_string(:B, 3, [1,1,1], [3,2,3,2,1,2,3,2,1])
Monomial basis of a highest weight module
of highest weight [1, 1, 1]
of dimension 512
with monomial ordering neglex([x1, x2, x3, x4, x5, x6, x7, x8, x9])
over Lie algebra of type B3
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[0, 0, 1]
[0, 1, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
julia> basis_lie_highest_weight_string(:A, 4, [1,1,1,1], [4,3,2,1,2,3,4,3,2,3])
Monomial basis of a highest weight module
of highest weight [1, 1, 1, 1]
of dimension 1024
with monomial ordering neglex([x1, x2, x3, x4, x5, x6, x7, x8, x9, x10])
over Lie algebra of type A4
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[0, 0, 0, 1]
[0, 0, 1, 0]
[0, 1, 0, 0]
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[0, 0, 1, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[0, 1, 0, 1]
```

This function is part of the experimental code in Oscar. Please read here for more details.

# Functions for Kodaira embeddings

`basis_coordinate_ring_kodaira`

— Function```
basis_coordinate_ring_kodaira(type::Symbol, rank::Int, highest_weight::Vector{Int}, degree::Int; monomial_ordering::Symbol=:degrevlex)
basis_coordinate_ring_kodaira(type::Symbol, rank::Int, highest_weight::Vector{Int}, degree::Int, birational_sequence::Vector{Int}; monomial_ordering::Symbol=:degrevlex)
basis_coordinate_ring_kodaira(type::Symbol, rank::Int, highest_weight::Vector{Int}, degree::Int, birational_sequence::Vector{Vector{Int}}; monomial_ordering::Symbol=:degrevlex)
```

Compute monomial bases for the degree-truncated coordinate ring (for all degrees up to `degree`

) of the Kodaira embedding of the generalized flag variety into the projective space of the highest weight module with highest weight `highest_weight`

for a simple Lie algebra $L$ of type `type`

and rank `rank`

. Furthermore, for each degree, return the monomials that are not contained in the Minkowski sum of the bases of the lower degrees.

Currently, this function expects $-w_0(\lambda)$ instead of $\lambda$ as the `highest_weight`

input. This might change in a minor release.

If no birational sequence is specified, all operators in the order of `basis_lie_highest_weight_operators`

are used. A birational sequence of type `Vector{Int}`

is a sequence of indices of operators in `basis_lie_highest_weight_operators`

. A birational sequence of type `Vector{Vector{Int}}`

is a sequence of weights in terms of the simple roots $\alpha_i$.

`monomial_ordering`

describes the monomial ordering used for the basis. If this is a weighted ordering, the height of the corresponding root is used as weight.

**Example**

```
julia> bases = basis_coordinate_ring_kodaira(:G, 2, [1,0], 6; monomial_ordering = :invlex)
6-element Vector{Tuple{MonomialBasis, Vector{ZZMPolyRingElem}}}:
(Monomial basis of a highest weight module with highest weight [1, 0] over Lie algebra of type G2, [1, x1, x3, x1*x3, x1^2*x3, x3*x4, x1*x3*x4])
(Monomial basis of a highest weight module with highest weight [2, 0] over Lie algebra of type G2, [x4, x1*x4, x4^2, x3*x4^2, x1*x3*x4^2])
(Monomial basis of a highest weight module with highest weight [3, 0] over Lie algebra of type G2, [x1^2*x4^2, x4^3, x1*x4^3, x4^4, x1*x4^4, x3*x4^4, x5, x2*x5, x1*x2*x5, x1^2*x2*x5, x3^2*x5, x1*x3^2*x5, x3^3*x5, x1*x3^3*x5])
(Monomial basis of a highest weight module with highest weight [4, 0] over Lie algebra of type G2, [x4^5, x1*x4^5, x4^6, x3^2*x4*x5, x1*x3^2*x4*x5, x3^2*x4^2*x5, x3^3*x4^2*x5])
(Monomial basis of a highest weight module with highest weight [5, 0] over Lie algebra of type G2, [x1^2*x4^6, x4^7, x1*x4^7, x2*x4^3*x5, x1*x2*x4^3*x5, x2*x3*x4^3*x5, x1*x2*x3*x4^3*x5, x1^2*x2*x3*x4^3*x5, x2*x3^2*x4^3*x5, x1*x2*x3^2*x4^3*x5, x1^2*x2*x3^2*x4^3*x5, x2*x4^4*x5])
(Monomial basis of a highest weight module with highest weight [6, 0] over Lie algebra of type G2, [x4^9, x1*x3*x4^4*x5, x2*x4^5*x5, x3*x4^5*x5, x3^2*x4^5*x5, x2*x3^2*x4^5*x5, x1*x2*x3^2*x4^5*x5, x3^4*x4*x5^2])
julia> [length(basis[2]) for basis in bases]
6-element Vector{Int64}:
7
5
14
7
12
8
julia> bases[end][1]
Monomial basis of a highest weight module
of highest weight [6, 0]
of dimension 714
with monomial ordering invlex([x1, x2, x3, x4, x5, x6])
over Lie algebra of type G2
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[1, 0]
[0, 1]
[1, 1]
[2, 1]
[3, 1]
[3, 2]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0]
[2, 0]
[3, 0]
[4, 0]
[5, 0]
[6, 0]
```

This function is part of the experimental code in Oscar. Please read here for more details.

`basis_coordinate_ring_kodaira_ffl`

— Function`basis_coordinate_ring_kodaira_ffl(type::Symbol, rank::Int, highest_weight::Vector{Int}, degree::Int; monomial_ordering::Symbol=:degrevlex)`

Compute monomial bases for the degree-truncated coordinate ring (for all degrees up to `degree`

) of the Kodaira embedding of the generalized flag variety into the projective space of the highest weight module with highest weight `highest_weight`

for a simple Lie algebra $L$ of type `type`

and rank `rank`

. Furthermore, for each degree, return the monomials that are not contained in the Minkowski sum of the bases of the lower degrees.

Currently, this function expects $-w_0(\lambda)$ instead of $\lambda$ as the `highest_weight`

input. This might change in a minor release.

The the birational sequence used consists of all operators in descening height of the corresponding root, i.e. a "good" ordering.

The monomial ordering is fixed to `degrevlex`

.

**Example**

```
julia> bases = basis_coordinate_ring_kodaira_ffl(:G, 2, [1,0], 6)
6-element Vector{Tuple{MonomialBasis, Vector{ZZMPolyRingElem}}}:
(Monomial basis of a highest weight module with highest weight [1, 0] over Lie algebra of type G2, [1, x6, x4, x3, x2, x1, x1*x6])
(Monomial basis of a highest weight module with highest weight [2, 0] over Lie algebra of type G2, [])
(Monomial basis of a highest weight module with highest weight [3, 0] over Lie algebra of type G2, [])
(Monomial basis of a highest weight module with highest weight [4, 0] over Lie algebra of type G2, [])
(Monomial basis of a highest weight module with highest weight [5, 0] over Lie algebra of type G2, [])
(Monomial basis of a highest weight module with highest weight [6, 0] over Lie algebra of type G2, [])
julia> [length(basis[2]) for basis in bases]
6-element Vector{Int64}:
7
0
0
0
0
0
julia> bases[end][1]
Monomial basis of a highest weight module
of highest weight [6, 0]
of dimension 714
with monomial ordering degrevlex([x1, x2, x3, x4, x5, x6])
over Lie algebra of type G2
where the used birational sequence consists of the following roots (given as coefficients w.r.t. alpha_i):
[3, 2]
[3, 1]
[2, 1]
[1, 1]
[0, 1]
[1, 0]
and the basis was generated by Minkowski sums of the bases of the following highest weight modules:
[1, 0]
```

This function is part of the experimental code in Oscar. Please read here for more details.