Equivariant Gromov–Witten invariants of GKM graphs

One of the main features of this package is to calculate equivariant Gromov-Witten invariants of GKM spaces $X$ (see Definition).

Informally, they are defined as follows. Given equivariant cohomology classes $y_1,\dots,y_m\in H_T^*(X;\mathbb{Q})$, a choice of genus $g\ge 0$, and a curve class $\beta\in H_2(X;\mathbb{Z})$, the associated $T$-equivariant Gromov-Witten invariant is

\[GW^T_{X,g,m,\beta}(y_1,\dots,y_m) := \int_{\left[\overline{\mathcal{M}}_{g,m}(X;\beta)\right]_T^\text{vir}} \prod_{i=1}^m \text{ev}_i^*(y_i) \in H_T^*(\text{point};\mathbb{Q})\cong \mathbb{Q}[t_1,\dots,t_r].\]

Here, $\overline{\mathcal{M}}_{g,m}(X;\beta)$ is the moduli space of stable maps of genus $g$ with $m$ marked points to $X$ in curve class $\beta$, and $\text{ev}_i\colon \overline{\mathcal{M}}_{g,m}(X;\beta) \rightarrow X$ is the evaluation map at the $i$-th marked point. We refer to [CK99] for details.

It is sometimes desirable to multiply the integrand in $\int_{\left[\overline{\mathcal{M}}_{g,m}(X;\beta)\right]_T^\text{vir}}$ by additional cohomology classes on $\overline{\mathcal{M}}_{g,m}(X;\beta)$, such as $\psi$-classes or the top Chern classes of certain vector bundles. This is supported, see Cohomology classes on the moduli space.

Mathematical ingredients: The following mathematical ingredients are used in the package:

  • The localization formula from [LS17, Hir23] that expresses equivariant Gromov-Witten invariants in the form

    \[ GW^T_{X,g,m,\beta}(...) = \sum_{\overrightarrow{\Gamma}} GW^T_{\overrightarrow{\Gamma}}\]

    where the sum is over certain decorated graphs (trees in genus zero) $\overrightarrow{\Gamma}$ mapping into the GKM graph of $X$, such that the edge multiplicities sum to the curve class $\beta\in H_2(X;\mathbb{Z})$. Here, $GW^T_{\overrightarrow{\Gamma}}$ is a rational function in $(\dim{T})$-many variables, i.e. an element of $\text{Frac}H_T^*(\text{pt};\mathbb{Q})$.

  • An efficient way of enumerating graphs (or trees in genus zero) with marked points and counting their automorphisms (inspired by [WROM86]).

  • A way of enumerating all combination of edges with multiplicities in the GKM graph that sum to a given curve class $\beta\in H_2(X;\mathbb{Z})$ (see supporting paper).

  • For positive genus, a table of Hodge integrals $\int_{\overline{\mathcal{M}}_{g,n}} \psi_1^{a_1}\cdots \psi_n^{a_n}\lambda_1^{l_1}\cdots\lambda_g^{l_g}$ up to the required genus, which we generate using [Yan10a, Yan10b].

Interesting aspects of the positive genus calculation will be discussed in a follow-up paper.

Integrating on the moduli space

GKMtools.gromov_witten — Function
gromov_witten(G::AbstractGKM_graph, beta::CurveClass_type, n_marks::Int64, P_input::EquivariantClass; show_bar::Bool = true, fast_mode::Bool = false, g::Int64 = 0) -> GW invariants

Integrate the class P_input over the moduli space $\overline{\mathcal{M}}_{g,n}(X,\beta)$ of genus g stable maps to $X$ in class $\beta\in H_2(X;\mathbb{Z})$ with n_marks marked points. The result is an element of $\text{Frac}(H_T^*(\text{pt};\mathbb{Q}))$, i.e. a rational function in $\dim_\mathbb{C}(T)$ many variables.

Note

If the underlying space is a (smooth projective or Hamiltonian) GKM space then the output should in fact live in $H_T^*(\text{pt};\mathbb{Q})$, so it should be a polynomial in the $\dim_\mathbb{C}(T)$ many variables.

Warning

The GKM graph G must have a connection, as this datum is required by the localization formula [LS17].

Arguments

  • G::AbstractGKM_graph: The GKM graph of the target GKM space $X$.
  • beta::CurveClass_type: The (non-zero) curve class $\beta\in H_2(X;\mathbb{Z})$ in which the image of the stable map should lie. To produce beta, use functions like curve_class (see Curve Classes).
  • P_input::EquivariantClass: The equivariant cohomology class on $\overline{\mathcal{M}}_{g,n}(X,\beta)$ that is being integrated. Use the functions ev, class_one, and Psi to produce this. These classes also support arithmetic using +, *, et cetera.
  • show_bar::Bool: If true, a progress bar will be displayed showing the estimated time until completion. This should be used for big examples.
  • fast_mode::Bool: If the expected result of the computation is a number, this option will speed up the computation.
  • g::Int64: Genus of the GW invariant to be computed. The default value is 0.
Warning

If the expected result of the computation is not a number and fast_mode is true, the result will be a meaningless number.

Example

julia> P2 = projective_space(GKM_graph, 2);

julia> beta = curve_class(P2, Edge(1, 2));

julia> gromov_witten(P2, beta, 1, ev(1, point_class(P2, 1)); show_bar=false)
0

julia> gromov_witten(P2, beta, 2, ev(1, point_class(P2, 1)) * ev(2, point_class(P2, 2)); show_bar=false)
1

julia> gromov_witten(P2, beta, 2, ev(1, point_class(P2, 1)) * ev(2, point_class(P2, 1)); show_bar=false, fast_mode=true)
1

julia> gromov_witten(P2, beta, 2, ev(1, point_class(P2, 1))^2 * ev(2, point_class(P2, 2)); show_bar=false)
t1^2 - t1*t2 - t1*t3 + t2*t3

julia> gromov_witten(P2, beta, 3, ev(1, point_class(P2, 1)) * ev(2, point_class(P2, 1)) * ev(3, point_class(P2, 3)); show_bar=false)
t1 - t2

Example in positive genus

In the following example, $F$ is the twisted flag manifold and $\beta=[C_e]$, where $e$ is the unique edge of the GKM graph of $F$ with $\int_{C_e} c_1(T_F)=0$. Thus, the resulting invariants agree with those of an equivariantly Calabi–Yau GKM linearization of $\mathcal{O}_{\mathbb{P}^1}(1)\oplus \mathcal{O}_{\mathbb{P}^1}(-3)$.

julia> F = gkm_3d_twisted_flag();

julia> beta = curve_class(F, "3", "4")
(-2, 1)

julia> for d in 1:3
         gw = gromov_witten(F, d*beta, 0, class_one(); g=1, show_bar=false)
         println("Genus 1, degree $d: $gw")
       end
Genus 1, degree 1: 1//12
Genus 1, degree 2: -1//24
Genus 1, degree 3: -29//36
source

Cohomology classes on the moduli space

GKMtools.ev — Function
ev(j::Int64, cc) -> EquivariantClass

Return the equivariant cohomology class on $\overline{\mathcal{M}}_{g,n}(X,\beta)$ that is given by pulling back the cohomology class cc on $X$ along the evaluation map at the j-th point: $\text{ev}_j\colon \overline{\mathcal{M}}_{g,n}(X,\beta)\rightarrow X$.

Example

julia> G24 = grassmannian(GKM_graph, 2, 4);

julia> e1 = ev(1, point_class(G24, 1));

julia> e2 = ev(2, first_chern_class(G24));

julia> e3 = ev(3, poincare_dual(gkm_subgraph_from_vertices(G24, [1, 2])));

julia> beta = curve_class(G24, Edge(1, 2));

julia> gromov_witten(G24, beta, 3, e1 * e2 * e3; show_bar=false)
4
source
GKMtools.class_one — Function
class_one() -> EquivariantClass

Return the cohomology class $1$ on $\overline{\mathcal{M}}_{g,n}(X,\beta)$.

Example

julia> P2 = projective_space(GKM_graph, 2);

julia> beta = curve_class(P2, Edge(1, 2));

julia> gromov_witten(P2, beta, 2, ev(1, point_class(P2, 1)) * ev(2, point_class(P2, 2)); show_bar=false)
1

julia> gromov_witten(P2, beta, 2, ev(1, point_class(P2, 1)) * ev(2, point_class(P2, 2)) * class_one(); show_bar=false)
1

julia> gromov_witten(P2, beta, 0, class_one(); show_bar=false)
0
source
GKMtools.Psi — Function
Psi(a) -> EquivariantClass

For each index $i$ such that $1\le i \le n$, there is a line bundle on $\overline{\mathcal{M}}_{g,n}(X,\beta)$ such that the fiber at a moduli point is the cotangent bundle of the curve at the $i^\mathrm{th}$ marked point. We denote by $\psi_i$ the first Chern class of this line bundle. In order to compute invariants involving ${\psi_1}^{a_1}\cdots {\psi_n}^{a_n}$, for some nonnegative integers $a_1,\ldots, a_n$, we write Psi(a_1,...,a_n).

Examples

Let $G$ be the GKM graph of the Hirzebruch surface $\mathbb{P}(\mathcal{O}_{\mathbb{P}^1}(0) \oplus \mathcal{O}_{\mathbb{P}^1}(1))$, let $\beta$ the class of the fiber. The invariant

\[\int_{\overline{\mathcal{M}}_{0,2}(G, \beta)}\mathrm{ev}_{1}^{*}([\mathrm{pt}])\cdot\psi_{1}^{0}\psi_{2} = -1,\]

can be computed as following.

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

julia> P = ev(1, point_class(G, 1)) * Psi(0,1);

julia> beta = curve_class(G, "1", "4"); # beta is a fiber of the map G -> P^1

julia> gromov_witten(G, beta, 2, P; show_bar=false)
-1

Let us give an example in positive genus. Let P1 be the GKM graph of $\mathbb{P}^1$, and let $\beta$ be the class of the line. Choose $n$ and $g$ such that $d=n+1-g>0$. The invariant

\[\int_{\overline{\mathcal{M}}_{g,n}(\mathbb{P}^1, d\beta)}\prod_{i=1}^n \left(\mathrm{ev}_{i}^{*}([\mathrm{pt}]) \psi_{i}^2 \right),\]

can be computed as following:

julia> P1 = projective_space(GKM_graph, 1); 

julia> beta = curve_class(P1, "1", "2"); # beta is the class of the line

julia> w = point_class(1, P1);

julia> n = 4; g = 2; # so that d > 0

julia> d = n + 1 - g;

julia> P = prod(i -> ev(i, w), 1:n); # = ev(1, w) * ev(2, w) * ev(3, w) * ev(4, w)

Now we multiply P by the psi-classes:

julia> P *= Psi([2 for _ in 1:n]); # = Psi(2,2) * ev(1, w)*ev(2, w)*ev(3, w)*ev(4, w)

julia> gromov_witten(P1, d*beta, n, P; g = g, show_bar = false)
263//96

Results match those in [DY19].

To see a non-compact example, let $X:=\text{Tot}(\mathcal{O}_{\mathbb{P}^2}(-1)\oplus\mathcal{O}_{\mathbb{P}^2}(-2))$ and let us compute

\[\int_{\overline{\mathcal{M}}_{0,2}(X, d\beta)}\psi_1\psi_2^2\]

for $1\le d\le 4$, where $\beta$ is the hyperplane class.

julia> G = total_space(vector_bundle_O(2, [-1, -2]));

julia> beta = curve_class(G, Edge(1, 2));

julia> P = Psi(1,2);

julia> for d in 1:4
           println(gromov_witten(G, d*beta, 2, P; show_bar=false))
       end
0
1
-3//2
401//144

Finally, let $X:=\text{Tot}(\mathcal{O}_{\mathbb{P}^1}(-1)\oplus\mathcal{O}_{\mathbb{P}^1}(-1))$ and let us compute

\[\int_{\overline{\mathcal{M}}_{g,2}(X, d\beta)}\psi_1\psi_2\]

for $1\le d\le 3$ and $0\le g\le 3$, where $\beta$ is the hyperplane class.

julia> G = total_space(vector_bundle_O(1, [-1, -1]));

julia> beta = curve_class(G, Edge(1, 2));

julia> P = Psi(1, 1);

julia> for g in 0:3
           for d in 1:3
               print("g=$g, d=$d: ")
               println(gromov_witten(G, d*beta, 2, P; g=g, show_bar=false))
           end
       end
g=0, d=1: 2
g=0, d=2: 1//4
g=0, d=3: 2//27
g=1, d=1: 0
g=1, d=2: 0
g=1, d=3: 0
g=2, d=1: 1//40
g=2, d=2: 1//20
g=2, d=3: 3//40
g=3, d=1: 5//1512
g=3, d=2: 5//189
g=3, d=3: 5//56
source
GKMtools.virtual_zero_section — Function
virtual_zero_section(V::GKM_vector_bundle) -> EquivariantClass

Arguments

  • V::GKM_vector_bundle: A vector bundle over a GKM graph $X$.

Return the equivariant cohomology class on $\overline{\mathcal{M}}_{0,n}(X,\beta)$ of the top Chern class of $\pi_*(\text{ev}^*_{n+1}(V))$ where $\pi\colon \overline{\mathcal{M}}_{0,n+1}(X,\gamma)\rightarrow \overline{\mathcal{M}}_{0,n}(X,\gamma)$ forgets the last map.

Note

This procedure assumes that the moduli space is of stable maps of genus zero and that the vector bundle is convex, i.e., $H^1(\mathbb{P}^1, f^*V) = 0$ for all stable maps $f:\mathbb{P}^1\to X$. If these conditions are not met, the computation will stop. If $i\colon Y\hookrightarrow X$ is the zero locus of a generic section of $V$, then the Gromov-Witten invariants of $Y$ satisfy:

\[ \sum_{\gamma:i_*(\gamma)=\beta} i_*([\overline{\mathcal{M}}_{0,n}(Y,\gamma)]^{\mathrm{vir}} = c_{\mathrm{top}}(\pi_*(\text{ev}^*_{n+1}(V)))\cap[\overline{\mathcal{M}}_{0,n}(X,\beta)]^{\mathrm{vir}}\]

See [CKL01] and [KKP03] for more details.

Example: Complete intersections in toric varieties

In the following examples, we use Oscar to construct a toric variety $X$. At the end, we compute the invariants of $Y$ defined as the zero section of a sum of line bundles of $X$.

Let us start with $X=\mathbb{P}^7$.

julia> P7 = projective_space(NormalToricVariety, 7)
Normal toric variety

The variety $Y$ is the zero section of $V=\mathcal{O}_{\mathbb{P}^7}(2)^{\oplus 4}$. So let us define the Oscar's toric line bundle $L=\mathcal{O}_{\mathbb{P}^7}(2)$.

julia> L = toric_line_bundle(P7, picard_group(P7)([2]))
Toric line bundle on a normal toric variety

Now, we define $l$ to be the GKM line bundle defined by $L$. We use gkm_line_bundle_of_toric.

julia> l = gkm_line_bundle_of_toric(L)
GKM vector bundle of rank 1 over GKM graph with 8 nodes and valency 7 with weights:
1: (0, 0, 0, 0, 0, 0, 0, -1, 2)
2: (2, 0, 0, 0, 0, 0, 0, -1, 0)
3: (0, 2, 0, 0, 0, 0, 0, -1, 0)
4: (0, 0, 2, 0, 0, 0, 0, -1, 0)
5: (0, 0, 0, 2, 0, 0, 0, -1, 0)
6: (0, 0, 0, 0, 2, 0, 0, -1, 0)
7: (0, 0, 0, 0, 0, 2, 0, -1, 0)
8: (0, 0, 0, 0, 0, 0, 2, -1, 0)

Now we can define the GKM vector bundle $V$.

julia> V = l + l + l + l;

Now we need $\mathbb{P}^7$ defined as a GKM graph.

julia> X = baseof(V);

Finally, we can compute our invariants as usual

julia> beta = curve_class(X, "1", "2");

julia> P = virtual_zero_section(V);

julia> gromov_witten(X, beta, 0, P; show_bar = false, fast_mode = true)
512

julia> gromov_witten(X, 2*beta, 0, P; show_bar = false, fast_mode = true)
9792

Now, let us compute the invariants of $Y$ where $X=\mathbb{P}(\mathcal{O}_{\mathbb{P}^3}\oplus \mathcal{O}_{\mathbb{P}^3}(3))$ and $V=\mathrm{det}(T_X)$.

julia> P3 = projective_space(NormalToricVariety, 3);

julia> O = trivial_line_bundle(P3);

julia> O3 = toric_line_bundle(P3, picard_group(P3)([3]));

julia> Fano = projectivization(O, O3); # Oscar's toric variety X

julia> L = anticanonical_bundle(Fano); # Oscar's anticanonical bundle

julia> V = gkm_line_bundle_of_toric(L) # GKM line bundle
GKM vector bundle of rank 1 over GKM graph with 8 nodes and valency 4 with weights:
1: (0, 0, 0, 0, -1, 2, 1)
2: (0, 0, 0, 2, -1, 0, 7)
3: (1, 0, 0, 0, -1, 2, 0)
4: (7, 0, 0, 2, -1, 0, 0)
5: (0, 1, 0, 0, -1, 2, 0)
6: (0, 7, 0, 2, -1, 0, 0)
7: (0, 0, 1, 0, -1, 2, 0)
8: (0, 0, 7, 2, -1, 0, 0)

The base of $V$, that is the GKM variety $X$, has effective cone generated by two curve classes.

julia> X = baseof(V);

julia> print_curve_classes(X)
2 -> 1: (0, 1), Chern number: 2
3 -> 1: (1, -3), Chern number: 1
4 -> 2: (1, 0), Chern number: 7
4 -> 3: (0, 1), Chern number: 2
5 -> 1: (1, -3), Chern number: 1
5 -> 3: (1, -3), Chern number: 1
6 -> 2: (1, 0), Chern number: 7
6 -> 4: (1, 0), Chern number: 7
6 -> 5: (0, 1), Chern number: 2
7 -> 1: (1, -3), Chern number: 1
7 -> 3: (1, -3), Chern number: 1
7 -> 5: (1, -3), Chern number: 1
8 -> 2: (1, 0), Chern number: 7
8 -> 4: (1, 0), Chern number: 7
8 -> 6: (1, 0), Chern number: 7
8 -> 7: (0, 1), Chern number: 2

julia> beta_1 = curve_class(X, "1", "2"); # first generator

julia> beta_2 = curve_class(X, "1", "3"); # second generator

julia> P = virtual_zero_section(V);

julia> gromov_witten(X, beta_1, 0, P; show_bar = false, fast_mode = true)
28

julia> gromov_witten(X, beta_2, 0, P; show_bar = false, fast_mode = true)
3

Example: Zero section of homogeneous bundles of Grassmannians

Let us compute the Gromov-Witten invariants of the quintic in $\mathbb{P}^4$. We use tautological_and_univ_bd.

julia> S, _ = tautological_and_univ_bd(GKM_graph, 1, 5);

julia> V = dual(S)^5;

julia> P4 = baseof(V);

julia> beta = curve_class(P4, "1", "2"); # line class

julia> P = virtual_zero_section(V);

julia> gromov_witten(P4, beta, 0, P; show_bar = false, fast_mode = true) # lines in the quintic in P4 
2875

julia> gromov_witten(P4, 2*beta, 0, P; show_bar = false, fast_mode = true)
4876875//8

julia> gromov_witten(P4, 3*beta, 0, P; show_bar = false, fast_mode = true)
8564575000//27

Let us compute the Gromov-Witten invariants of the Calabi-Yau threefold given by a zero section of $\mathcal{O}(4)$ in $G(2, 4)$.

julia> S, _ = tautological_and_univ_bd(GKM_graph, 2, 4);

julia> plucker = dual(det(S));

julia> V = plucker^4;

julia> G24 = baseof(V);

julia> beta = curve_class(G24, "12", "13");

julia> P = virtual_zero_section(V);

julia> gromov_witten(G24, beta, 0, P; show_bar = false, fast_mode = true) 
1280

julia> gromov_witten(G24, 2*beta, 0, P; show_bar = false, fast_mode = true) 
92448

julia> gromov_witten(G24, 3*beta, 0, P; show_bar = false, fast_mode = true)
422690816//27

Let us compute the Gromov-Witten invariants of the Calabi-Yau threefolds given by a zero section in $G(2, 5)$ of the following bundles:

\[\begin{aligned} V1 &= \mathcal{O}(1)\oplus\mathcal{O}(2)\oplus\mathcal{O}(2), \\ V2 &= \mathcal{O}(1)\oplus\mathcal{O}(1)\oplus\mathcal{O}(3), \\ V3 &= \mathcal{S}^{\vee}(1)\oplus\mathcal{O}(2), \\ V4 &= \wedge^2\mathcal{Q}(1). \end{aligned}\]

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

julia> plucker = dual(det(S));

julia> V1 = plucker + (plucker^2) + (plucker^2);

julia> V2 = plucker + plucker + (plucker^3);

julia> V3 = dual(S) * plucker + (plucker^2);

julia> V4 = wedge_product(Q, 2) * plucker;

julia> P = virtual_zero_section.([V1, V2, V3, V4]);

julia> G25 = baseof(V1);

julia> beta = curve_class(G25, "12", "13");

julia> gromov_witten(G25, beta, 0, P; show_bar = false, fast_mode = true) 
4-element Vector{QQFieldElem}:
 400
 540
 336
 325

julia> gromov_witten(G25, 2*beta, 0, P; show_bar = false, fast_mode = true) 
4-element Vector{QQFieldElem}:
 5590
 25245//2
 3678
 25925//8
Warning

All constructions involving vector bundles of the package are under develpment and will be expanded in the future.

source
GKMtools.derivated_functor — Function
derivated_functor(V::GKM_vector_bundle) -> EquivariantClass

Arguments

  • V::GKM_vector_bundle: A vector bundle over a GKM graph $X$.

Return the equivariant cohomology class on $\overline{\mathcal{M}}_{0,n}(X,\beta)$ of the top Chern class of $R^{1}\pi_*(\text{ev}^*_{n+1}(V))$ where $\pi\colon \overline{\mathcal{M}}_{0,n+1}(X,\gamma)\rightarrow \overline{\mathcal{M}}_{0,n}(X,\gamma)$ forgets the last map.

Note

This procedure assumes that the moduli space is of stable maps of genus zero and that the vector bundle is concave, i.e., $H^0(\mathbb{P}^1, f^*V) = 0$ for all stable maps $f:\mathbb{P}^1\to X$. If these conditions are not met, the computation will stop.

Example: Manin formula

Let us compute the Manin formula, that is:

\[\int_{\overline{\mathcal{M}}_{0,0}(\mathbb{P}^1, d\beta)} c_{\mathrm{top}}(R^{1}\pi_*(\text{ev}^*_{n+1}(\mathcal{O}_{\mathbb{P}^1}(-1) \oplus \mathcal{O}_{\mathbb{P}^1}(-1)))) = \frac{1}{d^3}.\]

julia> S, _ = tautological_and_univ_bd(GKM_graph, 1, 2); # S is the Serre's twisting bundle on P1

julia> V = S + S;

julia> P1 = baseof(V);

julia> beta = curve_class(P1, "1", "2"); # line class

julia> P = derivated_functor(V);

julia> gromov_witten(P1, beta, 0, P; show_bar = false, fast_mode = true)  
1

julia> gromov_witten(P1, 2*beta, 0, P; show_bar = false, fast_mode = true)
1//8

julia> gromov_witten(P1, 3*beta, 0, P; show_bar = false, fast_mode = true)
1//27
Warning

All constructions involving vector bundles of the package are under develpment and will be expanded in the future.

source
GKMtools.reduced_virtual_zero_section — Function
reduced_virtual_zero_section(V::GKM_vector_bundle) -> EquivariantClass

Arguments

  • V::GKM_vector_bundle: A convex vector bundle over a GKM graph $X$.

Return the equivariant cohomology class on $\overline{\mathcal{M}}_{g,n}(X,\beta)$ of the top Chern class of $\pi_*(\text{ev}^*_{n+1}(V))'$, the subbundle of $\pi_*(\text{ev}^*_{n+1}(V))$ that vanishes at the last marked point (cf. [Pan98, Equation (19)]).

Warning

All constructions involving vector bundles of the package are under develpment and will be expanded in the future.

Example

Let us use this function to compute the equivariant twisted quantum product $[p_1]\ast_{\mathcal{O}(2)} [p_2]$ on $\mathbb{P}^3$ with respect to the convex vector bundle $\mathcal{O}(2)$, as defined in [Pan98, Seciton 2.1]. We compute the coefficients up to degree 3.

julia> P3 = projective_space(NormalToricVariety, 3);

julia> L = toric_line_bundle(P3, picard_group(P3)([2]));

julia> l = gkm_line_bundle_of_toric(L);

julia> X = baseof(l);

julia> p1 = point_class(X, 1)
(-t1*t2*t3 + t1*t2*t5 + t1*t3*t5 - t1*t5^2 + t2*t3*t5 - t2*t5^2 - t3*t5^2 + t5^3)*e[1]

julia> p2 = point_class(X, 2)
(t1^3 - t1^2*t2 - t1^2*t3 - t1^2*t5 + t1*t2*t3 + t1*t2*t5 + t1*t3*t5 - t2*t3*t5)*e[2]

julia> beta = curve_class(X, "1", "2");

julia> P = reduced_virtual_zero_section(l)

julia> quantum_product(X, beta, p1, p2; useStructureConstants=false, twist_class=P)
(2*t1^2*t2*t3 - 2*t1^2*t2*t5 - 2*t1^2*t3*t5 + 2*t1^2*t5^2 - 3*t1*t2*t3*t4 + 2*t1*t2*t3*t5 + 3*t1*t2*t4*t5 - 2*t1*t2*t5^2 + 3*t1*t3*t4*t5 - 2*t1*t3*t5^2 - 3*t1*t4*t5^2 + 2*t1*t5^3 + t2*t3*t4^2 - t2*t3*t4*t5 - t2*t4^2*t5 + t2*t4*t5^2 - t3*t4^2*t5 + t3*t4*t5^2 + t4^2*t5^2 - t4*t5^3, -t1^3*t4 + 2*t1^3*t5 + t1^2*t2*t4 - 2*t1^2*t2*t5 + t1^2*t3*t4 - 2*t1^2*t3*t5 + t1^2*t4^2 - 3*t1^2*t4*t5 + 2*t1^2*t5^2 - t1*t2*t3*t4 + 2*t1*t2*t3*t5 - t1*t2*t4^2 + 3*t1*t2*t4*t5 - 2*t1*t2*t5^2 - t1*t3*t4^2 + 3*t1*t3*t4*t5 - 2*t1*t3*t5^2 + t2*t3*t4^2 - 3*t2*t3*t4*t5 + 2*t2*t3*t5^2, 0, 0)

julia> quantum_product(X, 2*beta, p1, p2; useStructureConstants=false, twist_class=P)
(-2*t1*t4 + 4*t1*t5 + t4^2 - 2*t4*t5, -2*t1*t4 + 4*t1*t5 + t4^2 - 2*t4*t5, -2*t1*t4 + 4*t1*t5 + t4^2 - 2*t4*t5, -2*t1*t4 + 4*t1*t5 + t4^2 - 2*t4*t5)

julia> quantum_product(X, 3*beta, p1, p2; useStructureConstants=false, twist_class=P)
(0, 0, 0, 0)

Note that one of the equivariant parameters in this examples comes from the fibrewise scaling of $\mathcal{O}(2)$.

source