# Homogeneous varieties

Note

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.

### 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