Some Special Ideals
This page is still in its development stage. Currently, it only contains the function below:
Grassmann Plücker Ideal
flag_pluecker_ideal
— Functionflag_pluecker_ideal(F::Union{Field, MPolyRing}, dimensions::Vector{Int}, n::Int; minimal::Bool=true)
Returns the generators of the defining ideal for the complete flag variety $\text{Fl}(\mathbb{F}, (d_1,\dots,d_k), n)$, where $(d_1,\dots,d_k) =$dimensions
, with $d_j\leq n-1$, denotes the rank. That is, the vanishing set of this ideal corresponds to the space of $k$-step flags of linear subspaces $V_1\subset\dots\subset V_k$ in $\mathbb{F}^n$, where $\text{dim}(V_j) = d_{j}$. You can obtain the generators for the complete flag variety of $\mathbb{F}^{n}$ by taking dimensions
$=(1,\dots,n-1)$ and n
$=n$. We remark that evaluating for F = QQ
yields the same set of generators as any field of characteristic $0$.
The first parameter can either be $\mathbb{F}$, or a polynomial ring over $\mathbb{F}$, with $\sum^{k}_{j=1}{n\choose d_j}$ variables. The parameter dimensions
needs to be a vector of distinct increasing entries. Evaluating this function with the parameter minimal = true
returns the reduced Gröbner basis for the flag Plücker ideal with respect to the degree reverse lexicographical order. For more details, see Theorem 14.6 [MS05]
Examples
Complete flag variety $\text{Fl}(\mathbb{Q}, (1,2,3), 4)$.
julia> flag_pluecker_ideal(QQ,[1,2,3],4)
Ideal generated by
x[[2, 4]]*x[[1, 2, 3]] - x[[2, 3]]*x[[1, 2, 4]] + x[[1, 2]]*x[[2, 3, 4]]
x[[1, 4]]*x[[1, 2, 3]] - x[[1, 3]]*x[[1, 2, 4]] + x[[1, 2]]*x[[1, 3, 4]]
-x[[3, 4]]*x[[1, 2, 3]] - x[[1, 3]]*x[[2, 3, 4]] + x[[2, 3]]*x[[1, 3, 4]]
-x[[1, 4]]*x[[2, 3, 4]] + x[[2, 4]]*x[[1, 3, 4]] - x[[3, 4]]*x[[1, 2, 4]]
-x[[1]]*x[[2, 3, 4]] + x[[2]]*x[[1, 3, 4]] - x[[3]]*x[[1, 2, 4]] + x[[4]]*x[[1, 2, 3]]
-x[[1, 4]]*x[[2, 3]] + x[[2, 4]]*x[[1, 3]] - x[[3, 4]]*x[[1, 2]]
-x[[1]]*x[[2, 3]] + x[[2]]*x[[1, 3]] - x[[3]]*x[[1, 2]]
-x[[2]]*x[[3, 4]] + x[[3]]*x[[2, 4]] - x[[4]]*x[[2, 3]]
-x[[1]]*x[[3, 4]] + x[[3]]*x[[1, 4]] - x[[4]]*x[[1, 3]]
-x[[1]]*x[[2, 4]] + x[[2]]*x[[1, 4]] - x[[4]]*x[[1, 2]]
Flag variety $\text{Fl}(\mathbb{Q},(1,3),4)$.
julia> flag_pluecker_ideal(QQ,[1,3],4)
Ideal generated by
-x[[1]]*x[[2, 3, 4]] + x[[2]]*x[[1, 3, 4]] - x[[3]]*x[[1, 2, 4]] + x[[4]]*x[[1, 2, 3]]
An example with a custom ring as input.
julia> R, _ = polynomial_ring(QQ, 8)
(Multivariate polynomial ring in 8 variables over QQ, QQMPolyRingElem[x1, x2, x3, x4, x5, x6, x7, x8])
julia> flag_pluecker_ideal(R, [1,3], 4; minimal=false)
Ideal generated by
x1*x6 - x2*x5 + x3*x7 - x4*x8
grassmann_pluecker_ideal
— Functiongrassmann_pluecker_ideal([ring::MPolyRing,] subspace_dimension::Int, ambient_dimension::Int)
Given a (possibly graded) ring, an ambient dimension $n$ and a subspace dimension $d$, return the ideal in the ring generated by the Plücker relations. If the input ring is not graded, return the ideal in the ring with the standard grading. If the ring is not specified return the ideal in a multivariate polynomial ring over the rationals with variables indexed by elements of ${[n]\choose d}$ with the standard grading.
The Grassmann-Plücker ideal is the homogeneous ideal generated by the relations defined by the Plücker Embedding of the Grassmannian. That is given Gr$(k, n)$ the Moduli space of all $k$-dimensional subspaces of an $n$-dimensional vector space, the relations are given by all $d \times d$ minors of a $d \times n$ matrix. For the algorithm see [Stu93].
Examples
julia> grassmann_pluecker_ideal(2, 4)
Ideal generated by
x[[1, 2]]*x[[3, 4]] - x[[1, 3]]*x[[2, 4]] + x[[1, 4]]*x[[2, 3]]
julia> R, x = polynomial_ring(residue_ring(ZZ, 7)[1], :x => (1:2, 1:3))
(Multivariate polynomial ring in 6 variables over ZZ/(7), zzModMPolyRingElem[x[1, 1] x[1, 2] x[1, 3]; x[2, 1] x[2, 2] x[2, 3]])
julia> grassmann_pluecker_ideal(R, 2, 4)
Ideal generated by
x[1, 1]*x[2, 3] + 6*x[2, 1]*x[1, 3] + x[1, 2]*x[2, 2]
Contact
Please direct questions about this part of OSCAR to the following people:
You can ask questions in the OSCAR Slack.
Alternatively, you can raise an issue on github.