Homogeneous varieties
This part is still under developement. Right now only the complete flag varieties of type A, B, C, D are available.
Weyl groups
Elements are represented as permutation cycles.
Examples
julia> W = weyl_group("A3")
Group([ (1,2), (2,3), (3,4) ])
julia> W()
()
julia> W([1,2])
(1,2)
julia> W(perm([2,1,3,4]))
(1,2)
julia> length(ans)
1
julia> basis(W)
7-element Vector{Vector{IntersectionTheory.BasicGAPGroupElem{IntersectionTheory.WeylGroup}}}:
[()]
[(3,4), (2,3), (1,2)]
[(2,3,4), (2,4,3), (1,2)(3,4), (1,2,3), (1,3,2)]
[(2,4), (1,2,3,4), (1,2,4,3), (1,3,4,2), (1,3), (1,4,3,2)]
[(1,2,4), (1,3,4), (1,3)(2,4), (1,4,2), (1,4,3)]
[(1,3,2,4), (1,4), (1,4,2,3)]
[(1,4)(2,3)]
julia> betti(W)
7-element Vector{Int64}:
1
3
5
6
5
3
1
julia> ans == betti(flag(1,2,3,4))
true
julia> longest_element(W)
(1,4)(2,3)
julia> gens(W)
3-element Vector{IntersectionTheory.BasicGAPGroupElem{IntersectionTheory.WeylGroup}}:
(1,2)
(2,3)
(3,4)
julia> W[2]
(2,3)
Parabolic subgroups.
julia> weyl_group("A4", [1,2,4])
Group([ (1,2), (2,3), (4,5) ])
julia> betti(weyl_group("A4")) ÷ betti(weyl_group("A4", [1,2,4]))
7-element Vector{Int64}:
1
1
2
2
2
1
1
julia> ans == betti(grassmannian(3, 5))
true
Homogeneous varieties
Only complete flag varieties $G/B$ of type A, B, C, D are available for now.
julia> homogeneous_variety("B3")
AbsVariety of dim 9
julia> homogeneous_variety("C3")
AbsVariety of dim 9
julia> F = homogeneous_variety("D3")
AbsVariety of dim 6
julia> euler(F)
24
julia> betti(F)
7-element Vector{Int64}:
1
3
5
6
5
3
1
Integral on partial flag varieties (temporary work-around; should be able to construct these directly).
julia> G = homogeneous_variety("C3")
AbsVariety of dim 9
julia> U = sum(G.bundles[1:2]) # U on IGr(2, 6)
AbsBundle of rank 2 on AbsVariety of dim 9
julia> O1 = det(dual(U))
AbsBundle of rank 1 on AbsVariety of dim 9
julia> Q = 6OO(G) - U
AbsBundle of rank 4 on AbsVariety of dim 9
julia> F = (dual(Q) - U) * O1 + O1^3 # case (sb0)
AbsBundle of rank 3 on AbsVariety of dim 9
julia> integral(todd(G.T - F) * ctop(F)) # chi(O_Y)
2
Schubert classes
Let $F:=\mathrm{Fl}(1,2,\dots,n)$ be a complete flag variety. Its Weyl group $W$ is isomorphic to the symmetric group $\mathfrak S_n$. For an element $w\in W$ of length $l(w)$, the Schubert variety $X_w$ is a subvariety of dimension $l(w)$. The following returns its class $\sigma_w:=[X_w]$ as an element of the Chow ring. The underlying polynomial is also known as a Schubert polynomial.
IntersectionTheory.schubert_class
— Methodschubert_class(F::AbsVariety, w::WeylGroupElem)
Return the Schubert class $\sigma_w$ on a complete flag variety $F$.
Examples
julia> F = flag(1,2,3,4,5)
AbsVariety of dim 10
julia> W = weyl_group(F)
Group([ (1,2), (2,3), (3,4), (4,5) ])
julia> w0 = longest_element(W)
(1,5)(2,4)
julia> schubert_class(F, w0)
1
julia> w = W([1,2], [3,4,5])
(1,2)(3,4,5)
julia> schubert_class(F, w)
c₃,₁^2*c₄,₁^3*c₅,₁^2 + c₃,₁^2*c₄,₁^2*c₅,₁^3
The classes $\sigma_w$ and $\sigma_{ww_0}$ are Poincaré dual to each other.
julia> integral(schubert_class(F, w) * schubert_class(F, w * w0))
1
For $w$ of length 1, $\sigma_w$ is the class of a rational curve.
julia> integral(schubert_class(F, W[1]) * F.O1)
1
Similar results hold for other types of complete flag varieties.
julia> F = homogeneous_variety("B3")
AbsVariety of dim 9
julia> W = weyl_group(F)
Group([ (1,2)(4,5), (2,3)(5,6), (3,6) ])
julia> w0 = longest_element(W)
(1,4)(2,5)(3,6)
julia> schubert_class(F, w0)
1
julia> schubert_class(F, W())
1//8*c₁*c₂^3*c₃^5
julia> ans == F.point
true