Curve Classes
Given a GKM variety $X$, every edge $e$ of its GKM graph corresponds to a $T$-invariant rational curve $C_e$ in $X$, and hence to a second homology class $[C_e]\in H_2(X;\mathbb{Z})$. As we discuss in the supporting paper, it turns out that:
- The subgroup of $H_2(X;\mathbb{Z})$ generated by $\{[C_e] : e \text{ an edge of the GKM graph}\}$ coincides with the subgroup generated by algebraic cycles.
- The weights of the GKM graph give rise to an explicit presentation of this subgroup in terms of a complete set of relations between the $[C_e]$ classes.
This is the basis on which this package handles curve classes of GKM spaces.
GKMtools.print_curve_classes
— Functionprint_curve_classes(G::GKM_graph)
For each edge, print the representative of its curve class and its Chern numner.
Examples
julia> P2 = projective_space(GKM_graph, 2);
julia> print_curve_classes(P2)
2 -> 1: (1), Chern number: 3
3 -> 1: (1), Chern number: 3
3 -> 2: (1), Chern number: 3
julia> H5 = gkm_graph_of_toric(hirzebruch_surface(NormalToricVariety, 5));
julia> print_curve_classes(H5)
2 -> 1: (-5, 1), Chern number: -3
3 -> 2: (1, 0), Chern number: 2
4 -> 1: (1, 0), Chern number: 2
4 -> 3: (0, 1), Chern number: 7
julia> P2_blown_up = blow_up_ex_div(gkm_subgraph_from_vertices(P2, [1]))
GKM subgraph of:
GKM graph with 4 nodes, valency 2 and axial function:
[1>3] -> [1>2] => (0, -1, 1)
2 -> [1>2] => (-1, 1, 0)
3 -> [1>3] => (-1, 0, 1)
3 -> 2 => (0, -1, 1)
Subgraph:
GKM graph with 2 nodes, valency 1 and axial function:
[1>3] -> [1>2] => (0, -1, 1)
julia> print_curve_classes(P2_blown_up.Codomain)
[1>3] -> [1>2]: (-1, 1), Chern number: 1
2 -> [1>2]: (1, 0), Chern number: 2
3 -> [1>3]: (1, 0), Chern number: 2
3 -> 2: (0, 1), Chern number: 3
GKMtools.curve_class
— Functioncurve_class(G::GKM_graph, src::String, dst::String)
Return the second homology class represented by the given edge whose source and destination have the given labels.
Example
julia> P2 = projective_space(GKM_graph, 2);
julia> P2_blown_up = blow_up_ex_div(gkm_subgraph_from_vertices(P2, [1]))
GKM subgraph of:
GKM graph with 4 nodes, valency 2 and axial function:
[1>3] -> [1>2] => (0, -1, 1)
2 -> [1>2] => (-1, 1, 0)
3 -> [1>3] => (-1, 0, 1)
3 -> 2 => (0, -1, 1)
Subgraph:
GKM graph with 2 nodes, valency 1 and axial function:
[1>3] -> [1>2] => (0, -1, 1)
julia> curve_class(P2_blown_up.Codomain, "[1>3]", "[1>2]")
(-1, 1)
curve_class(G::GKM_graph, e::Edge)
Return the second homology class represented by the given edge.
Oscar.IntersectionTheory.chern_number
— Functionchern_number(e::Edge, G::GKM_graph) -> ZZRingElem
Return the Chern number of the curve class represented by the given edge. This is the pairing of the curve class with the first Chern class of the tangent bundle.
Example
julia> P2 = projective_space(GKM_graph, 2);
julia> chern_number(Edge(1, 2), P2)
3
julia> partialFlagVariety = flag_variety(GKM_graph, [1, 2, 3, 1]);
julia> chern_number(Edge(1, 2), partialFlagVariety)
4
chern_number(G::GKM_graph, beta::CurveClass; check::Bool=true)::ZZRingElem
Return the Chern number of the curve class beta
. This is the pairing of the second homology class with the first Chern class of the tangent bundle.
Example
julia> P2 = projective_space(GKM_graph, 2);
julia> chern_number(P2, 2 * curve_class(P2, Edge(1, 2)))
6
julia> chern_number(P2, -2 * curve_class(P2, Edge(1, 2)) + curve_class(P2, Edge(2, 3)))
-3
Hecke.is_effective
— Functionis_effective(G::GKM_graph, beta::CurveClass) -> Bool
Return whether beta
is in the effective cone, i.e. whether it is a non-negative linear combination of edge curve classes.
Examples
julia> F3 = flag_variety(GKM_graph, [1, 1, 1]);
julia> beta = curve_class(F3, Edge(1, 2));
julia> is_effective(F3, beta)
true
julia> is_effective(F3, 0*beta)
true
julia> is_effective(F3, -1*beta)
false
julia> is_effective(F3, 2*beta)
true
GKMtools.GKM_second_homology
— FunctionGKM_second_homology(G::GKM_graph) -> GKM_H2
It builds (if necessary) and returns the GKM_H2
object of this GKM graph. The result is stored in G
for future use. Assume that G
represents a GKM variety $X$. The returned GKM_H2
struct is by definition the quotient of the $\mathbb{Z}$-module generated by the GKM graph's edges modulo the relations in $H_2(X;\mathbb{Z})$. Thus, it is the submodule of $H_2(X;\mathbb{Z})$ generated by classes of $T$-invariant curves.