Vector Bundles

Theory of GKM vector bundles, see [GSZ12].

Construction

Oscar.IntersectionTheory.line_bundle — Function
line_bundle(G, M, GMtoM, weights; fiber_reps=nothing) -> AbstractGKMVectorBundle

Construct a rank-one equivariant GKM vector bundle from one fibre weight at each vertex. For an orbifold base, fiber_reps optionally records the characters of the vertex stabilizers and this function is an alias for orbifold_line_bundle.

Examples

julia> G = projective_space(GKMGraph, 2);

julia> M = free_module(ZZ, 4);

julia> GMtoM = hom(lattice(G), 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 3 vertices with weights:
1: (0, 0, 0, 1)
2: (0, 0, 0, 1)
3: (0, 0, 0, 1)
julia> V2 = line_bundle(G, M, GMtoM, [gens(M)[1], gens(M)[2], gens(M)[3]])
GKM vector bundle of rank 1 over 3 vertices with weights:
1: (1, 0, 0, 0)
2: (0, 1, 0, 0)
3: (0, 0, 1, 0)
source
GKMtools.vector_bundle — Function
vector_bundle(G, M, GMtoM, weights; fiber_reps=nothing) -> AbstractGKMVectorBundle

Construct an equivariant GKM vector bundle. G is the base graph, M is the character lattice of the fibre weights, GMtoM maps the character lattice of G to M, and weights[v, i] is the i-th fibre weight at vertex v.

For an orbifold base, fiber_reps optionally records the representations of the vertex stabilizers. In that case this is an alias for orbifold_vector_bundle.

Examples

julia> G = projective_space(GKMGraph, 2);

julia> M = free_module(ZZ, 4);

julia> g = gens(M);

julia> GMtoM = hom(lattice(G), 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 3 vertices 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)
source
Oscar.IntersectionTheory.tangent_bundle — Function
tangent_bundle(G::GKMGraph; big_torus::Bool=true)

Construct the tangent bundle of a smooth GKM graph. By default, append one character that scales every fibre weight with weight one. Use big_torus=false for the tangent bundle over the original torus.

julia> G = projective_space(GKMGraph, 2);

julia> E = tangent_bundle(G)
GKM vector bundle of rank 2 over 3 vertices 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> E = tangent_bundle(G, big_torus = false)
GKM vector bundle of rank 2 over 3 vertices with weights:
1: (-1, 1, 0), (-1, 0, 1)
2: (1, -1, 0), (0, -1, 1)
3: (1, 0, -1), (0, 1, -1)
source
tangent_bundle(G::AbstractOrbifoldGKMGraph; big_torus::Bool=true)

Construct the tangent bundle, preserving the vertex stabilizer representations. By default, append one character that scales every fibre weight with weight one. Use big_torus=false for the tangent bundle over the original torus.

source
Oscar.IntersectionTheory.cotangent_bundle — Function
cotangent_bundle(G::GKMGraph; big_torus::Bool=true)

Construct the cotangent bundle of a smooth GKM graph. By default, append one character that scales every fibre weight with weight one. Use big_torus=false for the tangent bundle over the original torus.

julia> G = projective_space(GKMGraph, 2);

julia> E = cotangent_bundle(G)
GKM vector bundle of rank 2 over 3 vertices 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)
source
GKMtools.fiber_weight — Function
fiber_weight(E::AbstractGKMVectorBundle, v::Integer, i::Integer)

Return the i-th torus weight of the fibre of E over vertex v.

julia> E = line_bundle_O(3, 1)
GKM vector bundle of rank 1 over 4 vertices with weights:
1: (1, 0, 0, 0)
2: (2, -1, 0, 0)
3: (2, 0, -1, 0)
4: (2, 0, 0, -1)

julia> fiber_weight(E, 1, 1)
(1, 0, 0, 0)
source
LinearAlgebra.rank — Method
rank(V::AbstractGKMVectorBundle)

Return the rank of the bundle.

julia> G = gkm_graph_of_toric(hirzebruch_surface(NormalToricVariety, 5));

julia> M = free_module(ZZ, 5);

julia> g = gens(M);

julia> GMtoM = hom(lattice(G), M, g[1:4]);

julia> L = line_bundle(G, M, GMtoM, fill(g[5], 4));

julia> rank(direct_sum(L, L, L))
3
source

GKM graphs from vector bundles

GKMtools.baseof — Function
baseof(V::AbstractGKMVectorBundle) -> AbstractGKMGraph

Return the base of the given GKM vector bundle.

source
Oscar.total_space — Function
total_space(E::GKMVectorBundle) -> GKMGraph

Return the GKM graph of the total space of E.

The base flags are transported along the character-lattice map of E, and the fibre weights are added as standalone flags.

Examples

julia> G = projective_space(GKMGraph, 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)
Birkhoff-Grothendieck connection for GKM graph with 3 nodes and valency 2

julia> M = free_module(ZZ, 4);

julia> GMtoM = hom(lattice(G), M, [gens(M)[1], gens(M)[2], gens(M)[3]]);

julia> V = line_bundle(G, M, GMtoM, [gens(M)[4], gens(M)[4], gens(M)[4]])
GKM vector bundle of rank 1 over 3 vertices with weights:
1: (0, 0, 0, 1)
2: (0, 0, 0, 1)
3: (0, 0, 0, 1)

julia> T = total_space(V)
GKM graph with 3 nodes, valency 3 and axial function:
2 -> 1 => (1, -1, 0, 0)
3 -> 1 => (1, 0, -1, 0)
3 -> 2 => (0, 1, -1, 0)
Standalone flags:
Total space connection for GKM graph with 3 nodes and valency 3

julia> valency(T)
3

julia> is_compact(T)
false
julia> F = gkm_3d_twisted_flag()
GKM graph with 6 nodes, valency 3 and axial function:
2 -> 1 => (0, -1)
3 -> 2 => (1, 0)
4 -> 1 => (1, -2)
4 -> 3 => (-1, 1)
5 -> 2 => (1, -1)
5 -> 4 => (0, -1)
6 -> 1 => (1, -1)
6 -> 3 => (2, -1)
6 -> 5 => (1, 0)
Algorithmic connection for GKM graph with 6 nodes and valency 3

julia> X = total_space(dual(tangent_bundle(F)));

julia> print_curve_classes(X)
2 -> 1: (0, 1), Chern number: 0
3 -> 2: (-1, 1), Chern number: 0
4 -> 1: (1, 0), Chern number: 0
4 -> 3: (-2, 1), Chern number: 0
5 -> 2: (1, 0), Chern number: 0
5 -> 4: (-1, 1), Chern number: 0
6 -> 1: (1, 1), Chern number: 0
6 -> 3: (1, 0), Chern number: 0
6 -> 5: (0, 1), Chern number: 0
source
total_space(E::OrbifoldGKMVectorBundle) -> OrbifoldGKMGraph

Return the orbifold GKM graph of the total space of E. Torus weights and finite-isotropy representations are both included in the tangent data.

Examples

julia> G = projective_space(GKMGraph, 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)
Birkhoff-Grothendieck connection for GKM graph with 3 nodes and valency 2

julia> M = free_module(ZZ, 4);

julia> GMtoM = hom(lattice(G), M, [gens(M)[1], gens(M)[2], gens(M)[3]]);

julia> V = line_bundle(G, M, GMtoM, [gens(M)[4], gens(M)[4], gens(M)[4]])
GKM vector bundle of rank 1 over 3 vertices with weights:
1: (0, 0, 0, 1)
2: (0, 0, 0, 1)
3: (0, 0, 0, 1)

julia> T = total_space(V)
GKM graph with 3 nodes, valency 3 and axial function:
2 -> 1 => (1, -1, 0, 0)
3 -> 1 => (1, 0, -1, 0)
3 -> 2 => (0, 1, -1, 0)
Standalone flags:
Total space connection for GKM graph with 3 nodes and valency 3

julia> valency(T)
3

julia> is_compact(T)
false
julia> F = gkm_3d_twisted_flag()
GKM graph with 6 nodes, valency 3 and axial function:
2 -> 1 => (0, -1)
3 -> 2 => (1, 0)
4 -> 1 => (1, -2)
4 -> 3 => (-1, 1)
5 -> 2 => (1, -1)
5 -> 4 => (0, -1)
6 -> 1 => (1, -1)
6 -> 3 => (2, -1)
6 -> 5 => (1, 0)
Algorithmic connection for GKM graph with 6 nodes and valency 3

julia> X = total_space(dual(tangent_bundle(F)));

julia> print_curve_classes(X)
2 -> 1: (0, 1), Chern number: 0
3 -> 2: (-1, 1), Chern number: 0
4 -> 1: (1, 0), Chern number: 0
4 -> 3: (-2, 1), Chern number: 0
5 -> 2: (1, 0), Chern number: 0
5 -> 4: (-1, 1), Chern number: 0
6 -> 1: (1, 1), Chern number: 0
6 -> 3: (1, 0), Chern number: 0
6 -> 5: (0, 1), Chern number: 0
source
Oscar.projectivization — Function
projectivization(E::GKMVectorBundle) -> GKMGraph

Return the GKM graph of the projectivization of E. Its vertices are the one-dimensional weight spaces in the fibres of E; the vertex corresponding to the i-th weight over a base vertex v is labelled [v]_i.

Example

julia> E = tangent_bundle(projective_space(GKMGraph, 1));

julia> P = projectivization(E);

julia> (num_vertices(P), valency(P))
(2, 1)

julia> [label(P, v) for v in vertices(P)]
2-element Vector{String}:
 "[1]_1"
 "[2]_1"
source

Linear algebra

AbstractAlgebra.direct_sum — Function
direct_sum(E::OrbifoldGKMVectorBundle...) -> OrbifoldGKMVectorBundle

Return the direct sum of orbifold GKM vector bundles.

Examples

julia> G = projective_space(GKMGraph, 2);

julia> M = free_module(ZZ, 4);

julia> g = gens(M);

julia> GMtoM = hom(lattice(G), 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 3 vertices 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)
source
direct_sum(E::GKMVectorBundle...) -> GKMVectorBundle

Return the direct sum of smooth GKM vector bundles.

Examples

julia> G = projective_space(GKMGraph, 2);

julia> M = free_module(ZZ, 4);

julia> g = gens(M);

julia> GMtoM = hom(lattice(G), 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 3 vertices 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)
source
Hecke.tensor_product — Function
tensor_product(E::GKMVectorBundle, F::GKMVectorBundle)

Return the tensor product of two smooth GKM vector bundles.

julia> E = line_bundle_O(3, 1)
GKM vector bundle of rank 1 over 4 vertices with weights:
1: (1, 0, 0, 0)
2: (2, -1, 0, 0)
3: (2, 0, -1, 0)
4: (2, 0, 0, -1)

julia> F = line_bundle_O(3, 3)
GKM vector bundle of rank 1 over 4 vertices with weights:
1: (1, 0, 0, 0)
2: (4, -3, 0, 0)
3: (4, 0, -3, 0)
4: (4, 0, 0, -3)

julia> tensor_product(E, F)
┌ Warning: Vector bundles could be defined on different but isomorphic GKM bases;
│ using the base of the first bundle.
└ @ GKMtools :12
GKM vector bundle of rank 1 over 4 vertices with weights:
1: (2, 0, 0, 0)
2: (6, -4, 0, 0)
3: (6, 0, -4, 0)
4: (6, 0, 0, -4)

julia> E*F
┌ Warning: Vector bundles could be defined on different but isomorphic GKM bases;
│ using the base of the first bundle.
└ @ GKMtools :12
GKM vector bundle of rank 1 over 4 vertices with weights:
1: (2, 0, 0, 0)
2: (6, -4, 0, 0)
3: (6, 0, -4, 0)
4: (6, 0, 0, -4)
source
GKMtools.wedge_product — Function
wedge_product(E::OrbifoldGKMVectorBundle, n::Integer) -> OrbifoldGKMVectorBundle

Return the exterior power of E.

Examples

julia> S, Q = tautological_and_univ_bd(GKMGraph, 2, 5);

julia> wedge_product(Q, 2)
GKM vector bundle of rank 3 over 10 vertices 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)
source
GKMtools.sym_product — Function
sym_product(E::OrbifoldGKMVectorBundle, n::Integer) -> OrbifoldGKMVectorBundle

Return the symmetric power Sym^n E.

Examples

julia> S, Q = tautological_and_univ_bd(GKMGraph, 3, 5);

julia> sym_product(Q, 2)
GKM vector bundle of rank 3 over 10 vertices 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)
source
Hecke.dual — Function
dual(E::GKMVectorBundle) -> GKMVectorBundle

Return the dual of a smooth GKM vector bundle.

Examples

julia> G = gkm_graph_of_toric(hirzebruch_surface(NormalToricVariety, 5));

julia> M = free_module(ZZ, 5);

julia> g = gens(M);

julia> GMtoM = hom(lattice(G), 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 4 vertices 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 4 vertices 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)
source
dual(E::OrbifoldGKMVectorBundle) -> OrbifoldGKMVectorBundle

Return the dual of an orbifold GKM vector bundle. Both torus weights and isotropy characters are dualized.

Examples

julia> G = gkm_graph_of_toric(hirzebruch_surface(NormalToricVariety, 5));

julia> M = free_module(ZZ, 5);

julia> g = gens(M);

julia> GMtoM = hom(lattice(G), 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 4 vertices 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 4 vertices 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)
source

Important Examples

GKMtools.line_bundle_O — Function
line_bundle_O(n::Integer, k::Integer; big_torus=false)

Return the smooth GKM line bundle $\mathcal{O}(k)$ on the projective n-space. The parameter big_torus=false, the default option, means that the line bundle is constructed with the same torus action on the projective space. If big_torus=false, the default option, the torus acting is the sum of the torus on the projective space and a torus of dimension equal to the rank, acting on fibers.

julia> E = line_bundle_O(3, 2, big_torus = true)
GKM vector bundle of rank 1 over 4 vertices with weights:
1: (0, 0, 0, 0, 1)
2: (2, -2, 0, 0, 1)
3: (2, 0, -2, 0, 1)
4: (2, 0, 0, -2, 1)

julia> E = line_bundle_O(3, 2)
GKM vector bundle of rank 1 over 4 vertices with weights:
1: (1, 0, 0, 0)
2: (3, -2, 0, 0)
3: (3, 0, -2, 0)
4: (3, 0, 0, -2)
source
line_bundle_O(n::Integer; big_torus=false)

Return the smooth GKM line bundle $\mathcal{O}(1)$ on the projective n-space.

source
line_bundle_O(X::WeightedProjectiveSpace, k::Integer; big_torus=false)

Alias for weighted_projective_line_bundle(X, k; big_torus).

source
line_bundle_O(X::WeightedProjectiveSpace, divisor::AbstractVector{<:Integer}; big_torus=false)

Return the line bundle associated to a torus-invariant Cox divisor sum(divisor[i] * D_i).

For a weighted projective space P(w_1,...,w_n), the divisor D_i corresponds to O(w_i), so this is O(sum(divisor .* X.w)).

source
GKMtools.vector_bundle_O — Function
vector_bundle_O(X::WeightedProjectiveSpace, degrees; big_torus=false)

Return the direct sum on X of the line bundles $\mathcal{O}(i)$ where $i$ is given by the vector degrees.

source
vector_bundle_O(n::Integer, degrees; big_torus=false)

Return the direct sum on X of the line bundles $\mathcal{O}(i)$ where $i$ is given by the vector degrees.

Examples

julia> vector_bundle_O(3, [-3, 0, 5])
GKM vector bundle of rank 3 over 4 vertices with weights:
1: (1, 0, 0, 0), (1, 0, 0, 0), (1, 0, 0, 0)
2: (-2, 3, 0, 0), (1, 0, 0, 0), (6, -5, 0, 0)
3: (-2, 0, 3, 0), (1, 0, 0, 0), (6, 0, -5, 0)
4: (-2, 0, 0, 3), (1, 0, 0, 0), (6, 0, 0, -5)

julia> vector_bundle_O(3, [-3, 0, 5], big_torus = true)
GKM vector bundle of rank 3 over 4 vertices 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)
source
vector_bundle_O(n::AbstractVector{<:Integer}, degrees; big_torus=false)

Return a direct sum of line bundles on the product of projective spaces $\mathbb{P}^{n[1]} \times \cdots \times \mathbb{P}^{n[\mathrm{end}]}$. Each entry of degrees is an integer vector of length length(n), giving one summand's degree on each projective-space factor. For example, vector_bundle_O([1, 2], [[2, 3], [-1, 0]]) constructs $\mathcal{O}(2, 3) \oplus \mathcal{O}(-1, 0)$ on $\mathbb{P}^1 \times \mathbb{P}^2$.

If big_torus=true, we add one independent fibre-scaling character per summand.

Examples

julia> vector_bundle_O([1, 2], [[2, 3], [-1, 0]])
GKM vector bundle of rank 2 over 6 vertices with weights:
1,1: (1, 0, 1, 0, 0), (1, 0, 1, 0, 0)
2,1: (3, -2, 1, 0, 0), (0, 1, 1, 0, 0)
1,2: (1, 0, 4, -3, 0), (1, 0, 1, 0, 0)
2,2: (3, -2, 4, -3, 0), (0, 1, 1, 0, 0)
1,3: (1, 0, 4, 0, -3), (1, 0, 1, 0, 0)
2,3: (3, -2, 4, 0, -3), (0, 1, 1, 0, 0)

julia> vector_bundle_O([1, 2], [[2, 3], [-1, 0]], big_torus= true)
GKM vector bundle of rank 2 over 6 vertices with weights:
1,1: (0, 0, 0, 0, 0, 1, 0), (0, 0, 0, 0, 0, 0, 1)
2,1: (2, -2, 0, 0, 0, 1, 0), (-1, 1, 0, 0, 0, 0, 1)
1,2: (0, 0, 3, -3, 0, 1, 0), (0, 0, 0, 0, 0, 0, 1)
2,2: (2, -2, 3, -3, 0, 1, 0), (-1, 1, 0, 0, 0, 0, 1)
1,3: (0, 0, 3, 0, -3, 1, 0), (0, 0, 0, 0, 0, 0, 1)
2,3: (2, -2, 3, 0, -3, 1, 0), (-1, 1, 0, 0, 0, 0, 1)
source
GKMtools.gkm_vector_bundle_of_toric — Function
gkm_vector_bundle_of_toric(E::AbstractVector{<:ToricLineBundle}) -> GKMVectorBundle

Return the GKM vector bundle associated with the direct sum of the toric line bundles in E. All bundles must be defined on the same smooth projective toric variety. The base graph is shared by conversions on the same variety with the same number of summands, so their Chern classes can be combined. The torus includes one additional fibre-scaling parameter per summand.

Example

julia> X = hirzebruch_surface(NormalToricVariety, 2);

julia> E = [toric_line_bundle(X, [1, 0]), toric_line_bundle(X, [0, 1])];

julia> V = gkm_vector_bundle_of_toric(E)
GKM vector bundle of rank 2 over 4 vertices with weights:
1: (0, 0, 1, 0, -1, 0), (0, 0, 0, 1, 2, -1)
2: (-1, 0, 1, 0, 0, 0), (2, 0, 0, 1, 0, -1)
3: (-1, 0, 1, 0, 0, 0), (0, -1, 0, 1, 0, 0)
4: (0, 0, 1, 0, -1, 0), (0, -1, 0, 1, 0, 0)
source
GKMtools.tautological_and_univ_bd — Function
tautological_and_univ_bd(::Type{GKMGraph}, k::Integer, n::Integer)

Return the tautological bundle and universal quotient bundle on the Grassmannian Gr(k,n). The base graph is built once, with its homogeneous connection computed in place, and the stored flag representative at every vertex determines the two fibre weight spaces.

Examples

julia> S, Q = tautological_and_univ_bd(GKMGraph, 2, 4);

julia> S
GKM vector bundle of rank 2 over 6 vertices 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 6 vertices 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)
source