Vector Bundles
Theory of GKM vector bundles, see [GSZ12].
Construction
Oscar.IntersectionTheory.line_bundle — Function
line_bundle(G::AbstractGKM_graph, M::AbstractAlgebra.Generic.FreeModule{R}, GMtoM::AbstractAlgebra.Generic.ModuleHomomorphism{R}, weights::Vector{AbstractAlgebra.Generic.FreeModuleElem{R}}) -> GKM_vector_bundleReturn the equivariant line bundle over the GKM graph G whose weights over the fixed points are given by weights.
Arguments
g::G::AbstractGKM_graph: A GKM graphM::AbstractAlgebra.Generic.FreeModule{R}: The weight lattice of the torus acting on the line bundle. This is often bigger than the torus acting onG, for example when there is an extra scaling-action on the fibres.GMtoM::AbstractAlgebra.Generic.ModuleHomomorphism{R}: The inclusion ofG.M(the weight lattice of the torus acting onG) intoM(the weight lattice of the possibly bigger torus acting on the total space of the line bundle).weights::Vector{AbstractAlgebra.Generic.FreeModuleElem{R}}: A vector containing the weight of the fibre of the line bundle over each vertex ofG.
Examples
The trivial line bundle $L\rightarrow \mathbb{P}^2$ with scaling action on each fibre. Here $T=(\mathbb{C}^\times)^3$ acts on $\mathbb{P}^2$ and $T\times\mathbb{C}^\times$ acts on the total space of $L$, where the extra factor $\mathbb{C}^\times$ scales each fiber and preserves the base.
julia> G = projective_space(GKM_graph, 2);
julia> M = free_module(ZZ, 4);
julia> GMtoM = ModuleHomomorphism(G.M, M, [gens(M)[1], gens(M)[2], gens(M)[3]]);
julia> V1 = line_bundle(G, M, GMtoM, [gens(M)[4], gens(M)[4], gens(M)[4]])
GKM vector bundle of rank 1 over GKM graph with 3 nodes and valency 2 with weights:
1: (0, 0, 0, 1)
2: (0, 0, 0, 1)
3: (0, 0, 0, 1)Here is another line bundle on $\mathbb{P}^2$ with a more interesting action than fibrewise scaling:
julia> V2 = line_bundle(G, M, GMtoM, [gens(M)[1], gens(M)[2], gens(M)[3]])
GKM vector bundle of rank 1 over GKM graph with 3 nodes and valency 2 with weights:
1: (1, 0, 0, 0)
2: (0, 1, 0, 0)
3: (0, 0, 1, 0)GKMtools.vector_bundle — Function
vector_bundle(G::AbstractGKM_graph, M::AbstractAlgebra.Generic.FreeModule{R}, GMtoM::AbstractAlgebra.Generic.ModuleHomomorphism{R}, weights::Matrix{AbstractAlgebra.Generic.FreeModuleElem{R}}; calculateConnection::Bool=true) -> GKM_vector_bundleConstruct the equivariant vector bundle given by the following datum:
Arguments
g::G::AbstractGKM_graph: The GKM graph of the base.M::AbstractAlgebra.Generic.FreeModule{R}: The weight lattice of the torus acting on the vector bundle. This is often bigger than the torus acting onG, for example when there is an extra scaling-action on the fibres.GMtoM::AbstractAlgebra.Generic.ModuleHomomorphism{R}: The inclusion ofG.M(the weight lattice of the torus acting onG) intoM(the weight lattice of the possibly bigger torus acting on the total space of the vector bundle).weights::Matrix{AbstractAlgebra.Generic.FreeModuleElem{R}}: Over each fixed point (i.e., vertex ofG), the vector bundle splits into a direct sum of $r$ equivariant line bundles, where $r$ is the rank of the vector bundle. This argument is a matrix such thatweights[i, j]is the $j$-th weight at the $i$-th vertex.
Examples
Let us construct manually (without using direct_sum()) the direct sum of the two examples from line_bundle().
julia> G = projective_space(GKM_graph, 2);
julia> M = free_module(ZZ, 4);
julia> g = gens(M);
julia> GMtoM = ModuleHomomorphism(G.M, M, [g[1], g[2], g[3]]);
julia> V = vector_bundle(G, M, GMtoM, [g[1] g[4]; g[2] g[4]; g[3] g[4]])
GKM vector bundle of rank 2 over GKM graph with 3 nodes and valency 2 with weights:
1: (1, 0, 0, 0), (0, 0, 0, 1)
2: (0, 1, 0, 0), (0, 0, 0, 1)
3: (0, 0, 1, 0), (0, 0, 0, 1)GKMtools.tangent_bd — Method
tangent_bd(G::AbstractGKM_graph; scaling_weight::Int64 = 1) -> GKM_vector_bundleReturn the tangent bundle of G. The torus is enlarged by one dimension where the extra factor scales the fibers of the tangent bundle. The default weight is 1, but can be changed using the optional argument scaling_weight if desired.
Example
julia> G = projective_space(GKM_graph, 2)
GKM graph with 3 nodes, valency 2 and axial function:
2 -> 1 => (-1, 1, 0)
3 -> 1 => (-1, 0, 1)
3 -> 2 => (0, -1, 1)
julia> T = tangent_bd(G)
GKM vector bundle of rank 2 over GKM graph with 3 nodes and valency 2 with weights:
1: (1, -1, 0, 1), (1, 0, -1, 1)
2: (-1, 1, 0, 1), (0, 1, -1, 1)
3: (-1, 0, 1, 1), (0, -1, 1, 1)
julia> P = projectivization(T)
GKM graph is valid but not 3-independent, so connections may not be unique.
GKM graph with 6 nodes, valency 3 and axial function:
[1]_2 -> [1]_1 => (0, -1, 1, 0)
[2]_1 -> [1]_1 => (-1, 1, 0, 0)
[2]_2 -> [1]_2 => (-1, 1, 0, 0)
[2]_2 -> [2]_1 => (-1, 0, 1, 0)
[3]_1 -> [1]_2 => (-1, 0, 1, 0)
[3]_1 -> [2]_1 => (0, -1, 1, 0)
[3]_2 -> [1]_1 => (-1, 0, 1, 0)
[3]_2 -> [2]_2 => (0, -1, 1, 0)
[3]_2 -> [3]_1 => (-1, 1, 0, 0)
julia> betti_numbers(P)
4-element Vector{Int64}:
1
2
2
1GKMtools.cotangent_bd — Method
cotangent_bd(G::AbstractGKM_graph; scaling_weight::Int64 = 1) -> GKM_vector_bundleReturn the cotangent bundle of G. The torus is enlarged by one dimension where the extra factor scales the fibers of the tangent bundle. The default weight is 1, but can be changed using the optional argument scaling_weight if desired.
Example
julia> G = projective_space(GKM_graph, 3)
GKM graph with 4 nodes, valency 3 and axial function:
2 -> 1 => (-1, 1, 0, 0)
3 -> 1 => (-1, 0, 1, 0)
3 -> 2 => (0, -1, 1, 0)
4 -> 1 => (-1, 0, 0, 1)
4 -> 2 => (0, -1, 0, 1)
4 -> 3 => (0, 0, -1, 1)
julia> T = cotangent_bd(G)
GKM vector bundle of rank 3 over GKM graph with 4 nodes and valency 3 with weights:
1: (-1, 1, 0, 0, 1), (-1, 0, 1, 0, 1), (-1, 0, 0, 1, 1)
2: (1, -1, 0, 0, 1), (0, -1, 1, 0, 1), (0, -1, 0, 1, 1)
3: (1, 0, -1, 0, 1), (0, 1, -1, 0, 1), (0, 0, -1, 1, 1)
4: (1, 0, 0, -1, 1), (0, 1, 0, -1, 1), (0, 0, 1, -1, 1)Oscar.projectivization — Function
projectivization(V::GKM_vector_bundle) -> AbstractGKM_graphReturn the projectivisation of the given equivariant vector bundle.
If the given bundle does not admit a unique connection, it must be specified manually by setting the field V.con.
Example
julia> G = projective_space(GKM_graph, 2);
julia> M = free_module(ZZ, 4);
julia> g = gens(M);
julia> GMtoM = ModuleHomomorphism(G.M, M, [g[1], g[2], g[3]]);
julia> V1 = line_bundle(G, M, GMtoM, [gens(M)[4], gens(M)[4], gens(M)[4]]);
julia> V2 = line_bundle(G, M, GMtoM, [gens(M)[1], gens(M)[2], gens(M)[3]]);
julia> V = direct_sum(V1, V2)
GKM vector bundle of rank 2 over GKM graph with 3 nodes and valency 2 with weights:
1: (0, 0, 0, 1), (1, 0, 0, 0)
2: (0, 0, 0, 1), (0, 1, 0, 0)
3: (0, 0, 0, 1), (0, 0, 1, 0)
julia> P = projectivization(V)
GKM graph with 6 nodes, valency 3 and axial function:
[1]_2 -> [1]_1 => (-1, 0, 0, 1)
[2]_1 -> [1]_1 => (-1, 1, 0, 0)
[2]_2 -> [1]_2 => (-1, 1, 0, 0)
[2]_2 -> [2]_1 => (0, -1, 0, 1)
[3]_1 -> [1]_1 => (-1, 0, 1, 0)
[3]_1 -> [2]_1 => (0, -1, 1, 0)
[3]_2 -> [1]_2 => (-1, 0, 1, 0)
[3]_2 -> [2]_2 => (0, -1, 1, 0)
[3]_2 -> [3]_1 => (0, 0, -1, 1)The naming convention for the vertices of the projectivization's GKM graph is [v]_i where v is a vertex of the original GKM graph and i is the index of the line bundle direct summand to which this vertex of the projectivization corresponds.
GKMtools.baseof — Function
baseof(V::GKM_vector_bundle) -> AbstractGKM_graphReturn the base of the given GKM vector bundle.
GKMtools.gkm_line_bundle_of_toric — Function
gkm_line_bundle_of_toric(V::ToricLineBundle) -> GKM_vector_bundleReturn the GKM line bundle supported on the toric line bundle V.
Example
Let us compute the line bundle of bidegree [1,0] on the Hirzebruch surface $\mathbb{P}(\mathcal{O}_{\mathbb{P}^1}\oplus \mathcal{O}_{\mathbb{P}^1}(4))$.
julia> F4 = hirzebruch_surface(NormalToricVariety, 4);
julia> V = toric_line_bundle(F4, [1,0]);
julia> gkm_line_bundle_of_toric(V)
GKM vector bundle of rank 1 over GKM graph with 4 nodes and valency 2 with weights:
1: (0, 0, -1, 1, 0)
2: (1, 0, -1, 0, 0)
3: (1, 0, -1, 0, 0)
4: (0, 0, -1, 1, 0)Linear algebra
LinearAlgebra.rank — Method
rank(V::GKM_vector_bundle) -> Int64Return the rank of the given GKM vector bundle.
Example
julia> G = gkm_graph_of_toric(hirzebruch_surface(NormalToricVariety, 5));
julia> M = free_module(ZZ, 5);
julia> g = gens(M);
julia> GMtoM = ModuleHomomorphism(G.M, M, [g[1], g[2], g[3], g[4]]);
julia> L = line_bundle(G, M, GMtoM, [g[5], g[5], g[5], g[5]]);
julia> rank(direct_sum(L, L, L))
3AbstractAlgebra.direct_sum — Function
direct_sum(V::GKM_vector_bundle{R}...) -> GKM_vector_bundleReturn the direct sum of the given vector bundles. This requires all bundles to have the same base GKM graph and the same character lattice.
Example
julia> G = projective_space(GKM_graph, 2);
julia> M = free_module(ZZ, 4);
julia> g = gens(M);
julia> GMtoM = ModuleHomomorphism(G.M, M, [g[1], g[2], g[3]]);
julia> V1 = line_bundle(G, M, GMtoM, [gens(M)[4], gens(M)[4], gens(M)[4]]);
julia> V2 = line_bundle(G, M, GMtoM, [gens(M)[1], gens(M)[2], gens(M)[3]]);
julia> V = direct_sum(V1, V2)
GKM vector bundle of rank 2 over GKM graph with 3 nodes and valency 2 with weights:
1: (0, 0, 0, 1), (1, 0, 0, 0)
2: (0, 0, 0, 1), (0, 1, 0, 0)
3: (0, 0, 0, 1), (0, 0, 1, 0)Base.:+ — Method
+(V::GKM_vector_bundle, W::GKM_vector_bundle) -> GKM_vector_bundleReturn the direct sum of two vector bundles. This requires all bundles to have the same base GKM graph and the same character lattice.
Example
julia> G = projective_space(GKM_graph, 2);
julia> M = free_module(ZZ, 4);
julia> g = gens(M);
julia> GMtoM = ModuleHomomorphism(G.M, M, [g[1], g[2], g[3]]);
julia> V1 = line_bundle(G, M, GMtoM, [gens(M)[4], gens(M)[4], gens(M)[4]]);
julia> V2 = line_bundle(G, M, GMtoM, [gens(M)[1], gens(M)[2], gens(M)[3]]);
julia> V = V1 + V2
GKM vector bundle of rank 2 over GKM graph with 3 nodes and valency 2 with weights:
1: (0, 0, 0, 1), (1, 0, 0, 0)
2: (0, 0, 0, 1), (0, 1, 0, 0)
3: (0, 0, 0, 1), (0, 0, 1, 0)Hecke.dual — Method
dual(V::GKM_vector_bundle) -> GKM_vector_bundleReturn the dual equivariant vector bundle.
Example
julia> G = gkm_graph_of_toric(hirzebruch_surface(NormalToricVariety, 5));
julia> M = free_module(ZZ, 5);
julia> g = gens(M);
julia> GMtoM = ModuleHomomorphism(G.M, M, [g[1], g[2], g[3], g[4]]);
julia> L = line_bundle(G, M, GMtoM, [g[5], g[5], g[5], g[5]])
GKM vector bundle of rank 1 over GKM graph with 4 nodes and valency 2 with weights:
1: (0, 0, 0, 0, 1)
2: (0, 0, 0, 0, 1)
3: (0, 0, 0, 0, 1)
4: (0, 0, 0, 0, 1)
julia> dual(L)
GKM vector bundle of rank 1 over GKM graph with 4 nodes and valency 2 with weights:
1: (0, 0, 0, 0, -1)
2: (0, 0, 0, 0, -1)
3: (0, 0, 0, 0, -1)
4: (0, 0, 0, 0, -1)
Base.:* — Method
*(V::GKM_vector_bundle, W::GKM_vector_bundle) -> GKM_vector_bundleReturn the tensor product of V and W, that is $V \otimes W$.
Example
Let us compute the vector bundle $S\otimes\mathcal{O}(-1)$ of the Grassmannian $G(2, 4)$.
julia> S, Q = tautological_and_univ_bd(GKM_graph, 2, 4);
julia> S
GKM vector bundle of rank 2 over GKM graph with 6 nodes and valency 4 with weights:
12: (-1, 0, 0, 0), (0, -1, 0, 0)
13: (-1, 0, 0, 0), (0, 0, -1, 0)
14: (-1, 0, 0, 0), (0, 0, 0, -1)
23: (0, -1, 0, 0), (0, 0, -1, 0)
24: (0, -1, 0, 0), (0, 0, 0, -1)
34: (0, 0, -1, 0), (0, 0, 0, -1)
julia> O_minus_one = wedge_product(S, 2)
GKM vector bundle of rank 1 over GKM graph with 6 nodes and valency 4 with weights:
12: (-1, -1, 0, 0)
13: (-1, 0, -1, 0)
14: (-1, 0, 0, -1)
23: (0, -1, -1, 0)
24: (0, -1, 0, -1)
34: (0, 0, -1, -1)
julia> S * O_minus_one
GKM vector bundle of rank 2 over GKM graph with 6 nodes and valency 4 with weights:
12: (-2, -1, 0, 0), (-1, -2, 0, 0)
13: (-2, 0, -1, 0), (-1, 0, -2, 0)
14: (-2, 0, 0, -1), (-1, 0, 0, -2)
23: (0, -2, -1, 0), (0, -1, -2, 0)
24: (0, -2, 0, -1), (0, -1, 0, -2)
34: (0, 0, -2, -1), (0, 0, -1, -2)Base.:^ — Method
^(V::GKM_vector_bundle, n::Number) -> GKM_vector_bundleReturn the tensor product $V^{\otimes n}$.
Example
Let us compute the line bundle $l=\mathcal{O}(-4)$ of the Grassmannian $G(2, 4)$.
julia> S, Q = tautological_and_univ_bd(GKM_graph, 2, 4);
julia> S
GKM vector bundle of rank 2 over GKM graph with 6 nodes and valency 4 with weights:
12: (-1, 0, 0, 0), (0, -1, 0, 0)
13: (-1, 0, 0, 0), (0, 0, -1, 0)
14: (-1, 0, 0, 0), (0, 0, 0, -1)
23: (0, -1, 0, 0), (0, 0, -1, 0)
24: (0, -1, 0, 0), (0, 0, 0, -1)
34: (0, 0, -1, 0), (0, 0, 0, -1)
julia> O_minus_one = wedge_product(S, 2)
GKM vector bundle of rank 1 over GKM graph with 6 nodes and valency 4 with weights:
12: (-1, -1, 0, 0)
13: (-1, 0, -1, 0)
14: (-1, 0, 0, -1)
23: (0, -1, -1, 0)
24: (0, -1, 0, -1)
34: (0, 0, -1, -1)
julia> l = O_minus_one^4
GKM vector bundle of rank 1 over GKM graph with 6 nodes and valency 4 with weights:
12: (-4, -4, 0, 0)
13: (-4, 0, -4, 0)
14: (-4, 0, 0, -4)
23: (0, -4, -4, 0)
24: (0, -4, 0, -4)
34: (0, 0, -4, -4)GKMtools.wedge_product — Function
wedge_product(V::GKM_vector_bundle, n::Int64) -> GKM_vector_bundleReturn the wedge product, or external product, $\wedge^n V$.
Example
Let us compute $\wedge^3 Q$ where Q is the universal quotient bundle of the Grassmannian $G(2, 5)$.
julia> S, Q = tautological_and_univ_bd(GKM_graph, 2, 5);
julia> wedge_product(Q, 2)
GKM vector bundle of rank 3 over GKM graph with 10 nodes and valency 6 with weights:
12: (0, 0, -1, -1, 0), (0, 0, -1, 0, -1), (0, 0, 0, -1, -1)
13: (0, -1, 0, -1, 0), (0, -1, 0, 0, -1), (0, 0, 0, -1, -1)
14: (0, -1, -1, 0, 0), (0, -1, 0, 0, -1), (0, 0, -1, 0, -1)
15: (0, -1, -1, 0, 0), (0, -1, 0, -1, 0), (0, 0, -1, -1, 0)
23: (-1, 0, 0, -1, 0), (-1, 0, 0, 0, -1), (0, 0, 0, -1, -1)
24: (-1, 0, -1, 0, 0), (-1, 0, 0, 0, -1), (0, 0, -1, 0, -1)
25: (-1, 0, -1, 0, 0), (-1, 0, 0, -1, 0), (0, 0, -1, -1, 0)
34: (-1, -1, 0, 0, 0), (-1, 0, 0, 0, -1), (0, -1, 0, 0, -1)
35: (-1, -1, 0, 0, 0), (-1, 0, 0, -1, 0), (0, -1, 0, -1, 0)
45: (-1, -1, 0, 0, 0), (-1, 0, -1, 0, 0), (0, -1, -1, 0, 0)GKMtools.sym_product — Function
sym_product(V::GKM_vector_bundle, n::Int64) -> GKM_vector_bundleReturn the symmetric product $\mathrm{Sym}^n V$.
Example
Let us compute $\mathrm{Sym}^2 Q$ where Q is the universal quotient bundle of the Grassmannian $G(3, 5)$.
julia> S, Q = tautological_and_univ_bd(GKM_graph, 3, 5);
julia> sym_product(Q, 2)
GKM vector bundle of rank 3 over GKM graph with 10 nodes and valency 6 with weights:
123: (0, 0, 0, -2, 0), (0, 0, 0, -1, -1), (0, 0, 0, 0, -2)
124: (0, 0, -2, 0, 0), (0, 0, -1, 0, -1), (0, 0, 0, 0, -2)
125: (0, 0, -2, 0, 0), (0, 0, -1, -1, 0), (0, 0, 0, -2, 0)
134: (0, -2, 0, 0, 0), (0, -1, 0, 0, -1), (0, 0, 0, 0, -2)
135: (0, -2, 0, 0, 0), (0, -1, 0, -1, 0), (0, 0, 0, -2, 0)
145: (0, -2, 0, 0, 0), (0, -1, -1, 0, 0), (0, 0, -2, 0, 0)
234: (-2, 0, 0, 0, 0), (-1, 0, 0, 0, -1), (0, 0, 0, 0, -2)
235: (-2, 0, 0, 0, 0), (-1, 0, 0, -1, 0), (0, 0, 0, -2, 0)
245: (-2, 0, 0, 0, 0), (-1, 0, -1, 0, 0), (0, 0, -2, 0, 0)
345: (-2, 0, 0, 0, 0), (-1, -1, 0, 0, 0), (0, -2, 0, 0, 0)Missing docstring for det(::GKMtools.GKM_vector_bundle). Check Documenter's build log for details.
Connections
GKMtools.get_connection — Method
get_connection(V::GKM_vector_bundle)Return the connection of the given vector bundle, if it is unique or has been set manually. If the vector bundle does not admit a unique connection and it has not bene set manually, return nothing.
Mathematical description:
This is the same concept as a Connection on a GKM graph. Let G be the GKM graph that is the basis of the vector bundle V. Assume that G comes from a GKM space $X$. Then each edge of e corresponds to an invariant rational curve $C_e$ in $X$. If $V$ is an equivariant line bundle overe $X$, then its restriction to $C_e\cong\mathbb{P}^1$ splits into a direct sum of equivariant line bundles. This defines a bijection between the direct summands of $V$ at $\text{src}(e)$ and the direct summands of $V$ at $\text{dst}(e)$.
This bijection is recorded in the returned object.
Example
julia> G = projective_space(GKM_graph, 2);
julia> M = free_module(ZZ, 4);
julia> g = gens(M);
julia> GMtoM = ModuleHomomorphism(G.M, M, [g[1], g[2], g[3]]);
julia> V = vector_bundle(G, M, GMtoM, [g[1] g[4]; g[2] g[4]; g[3] g[4]])
GKM vector bundle of rank 2 over GKM graph with 3 nodes and valency 2 with weights:
1: (1, 0, 0, 0), (0, 0, 0, 1)
2: (0, 1, 0, 0), (0, 0, 0, 1)
3: (0, 0, 1, 0), (0, 0, 0, 1)
julia> get_connection(V)
Dict{Tuple{Edge, Int64}, Int64} with 12 entries:
(Edge(3, 1), 2) => 2
(Edge(1, 2), 1) => 1
(Edge(3, 1), 1) => 1
(Edge(1, 2), 2) => 2
(Edge(3, 2), 1) => 1
(Edge(2, 3), 1) => 1
(Edge(3, 2), 2) => 2
(Edge(2, 3), 2) => 2
(Edge(1, 3), 1) => 1
(Edge(2, 1), 1) => 1
(Edge(1, 3), 2) => 2
(Edge(2, 1), 2) => 2It is visible here that the vector bundle is a direct sum of two line bundles, since we have (e, i) => i for each edge e and index i. The output will be more complicated when the vector bundle does not split into line bundles.
GKMtools.get_any_connection — Method
get_any_connection(V::GKM_vector_bundle)Return any compatible connection for the given vector bundle, if one exists. The result does not necessarily agree with the splittings of $V$ over the $T$-stable $\mathbb{P}^1$s. However, for many applications in Gromov–Witten theory, any compatible connection is enough.
Important Examples
GKMtools.vector_bundle_O — Method
vector_bundle_O(n::Int64, d::Vector{Int64})Given $d=(d_1, d_2,\dots,d_r)$, return the vector bundle $\mathcal{O}(d_1)\oplus\cdots\oplus\mathcal{O}(d_r)\rightarrow \mathbb{P}^n$, linearized so that each summand has its own equivariant parameter.
Example
Let us see $\mathcal{O}(-3)\oplus\mathcal{O}(0)\oplus\mathcal{O}(5)$ on $\mathbb{P}^3$.
julia> V = GKMtools.vector_bundle_O(3, [-3, 0, 5])
GKM vector bundle of rank 3 over GKM graph with 4 nodes and valency 3 with weights:
1: (0, 0, 0, 0, 1, 0, 0), (0, 0, 0, 0, 0, 1, 0), (0, 0, 0, 0, 0, 0, 1)
2: (3, -3, 0, 0, 1, 0, 0), (0, 0, 0, 0, 0, 1, 0), (-5, 5, 0, 0, 0, 0, 1)
3: (3, 0, -3, 0, 1, 0, 0), (0, 0, 0, 0, 0, 1, 0), (-5, 0, 5, 0, 0, 0, 1)
4: (3, 0, 0, -3, 1, 0, 0), (0, 0, 0, 0, 0, 1, 0), (-5, 0, 0, 5, 0, 0, 1)The acting torus has rank 7. The first 4 copies of $\mathbb{C}^\times$ act on the base $\mathbb{P}^3$, the remaining 3 are just there to scale the fibres.
GKMtools.tautological_and_univ_bd — Function
tautological_and_univ_bd(::Type{GKM_graph}, k::Int, n::Int) -> GKM_vector_bundle{ZZRingElem}Return a pair (S, Q) where S is the tautological vector bundle, and Q is the universal quotient bundle of the Grassmann variety of k-planes in the complex vector space of dimension n.
Example
julia> S, Q = tautological_and_univ_bd(GKM_graph, 2, 4);
julia> S
GKM vector bundle of rank 2 over GKM graph with 6 nodes and valency 4 with weights:
12: (-1, 0, 0, 0), (0, -1, 0, 0)
13: (-1, 0, 0, 0), (0, 0, -1, 0)
14: (-1, 0, 0, 0), (0, 0, 0, -1)
23: (0, -1, 0, 0), (0, 0, -1, 0)
24: (0, -1, 0, 0), (0, 0, 0, -1)
34: (0, 0, -1, 0), (0, 0, 0, -1)
julia> Q
GKM vector bundle of rank 2 over GKM graph with 6 nodes and valency 4 with weights:
12: (0, 0, -1, 0), (0, 0, 0, -1)
13: (0, -1, 0, 0), (0, 0, 0, -1)
14: (0, -1, 0, 0), (0, 0, -1, 0)
23: (-1, 0, 0, 0), (0, 0, 0, -1)
24: (-1, 0, 0, 0), (0, 0, -1, 0)
34: (-1, 0, 0, 0), (0, -1, 0, 0)