Vector Bundles
Theory of GKM vector bundles, see [GSZ12].
Construction
Oscar.IntersectionTheory.line_bundle — Function
line_bundle(G, M, GMtoM, weights; fiber_reps=nothing) -> AbstractGKMVectorBundleConstruct 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)GKMtools.vector_bundle — Function
vector_bundle(G, M, GMtoM, weights; fiber_reps=nothing) -> AbstractGKMVectorBundleConstruct 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)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)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.
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)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)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))
3GKM graphs from vector bundles
GKMtools.baseof — Function
baseof(V::AbstractGKMVectorBundle) -> AbstractGKMGraphReturn the base of the given GKM vector bundle.
Oscar.total_space — Function
total_space(E::GKMVectorBundle) -> GKMGraphReturn 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)
falsejulia> 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: 0total_space(E::OrbifoldGKMVectorBundle) -> OrbifoldGKMGraphReturn 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)
falsejulia> 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: 0Oscar.projectivization — Function
projectivization(E::GKMVectorBundle) -> GKMGraphReturn 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"Linear algebra
AbstractAlgebra.direct_sum — Function
direct_sum(E::OrbifoldGKMVectorBundle...) -> OrbifoldGKMVectorBundleReturn 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)direct_sum(E::GKMVectorBundle...) -> GKMVectorBundleReturn 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)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)GKMtools.wedge_product — Function
wedge_product(E::OrbifoldGKMVectorBundle, n::Integer) -> OrbifoldGKMVectorBundleReturn 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)GKMtools.sym_product — Function
sym_product(E::OrbifoldGKMVectorBundle, n::Integer) -> OrbifoldGKMVectorBundleReturn 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)Hecke.dual — Function
dual(E::GKMVectorBundle) -> GKMVectorBundleReturn 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)dual(E::OrbifoldGKMVectorBundle) -> OrbifoldGKMVectorBundleReturn 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)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)line_bundle_O(n::Integer; big_torus=false)Return the smooth GKM line bundle $\mathcal{O}(1)$ on the projective n-space.
line_bundle_O(X::WeightedProjectiveSpace, k::Integer; big_torus=false)Alias for weighted_projective_line_bundle(X, k; big_torus).
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)).
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.
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)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)GKMtools.gkm_line_bundle_of_toric — Function
gkm_line_bundle_of_toric(E::ToricLineBundle) -> GKMVectorBundleReturn the GKM vector bundle associated with the toric line bundle E.
GKMtools.gkm_vector_bundle_of_toric — Function
gkm_vector_bundle_of_toric(E::AbstractVector{<:ToricLineBundle}) -> GKMVectorBundleReturn 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)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)