Skip to Main Content

Curve-Counting and Mirror Symmetry

Emily Clader

Communicated by Notices Associate Editor Han-Bom Moon

Curve-counting is a subject that dates back hundreds, even thousands, of years. Broadly speaking, its goal is to answer questions about the number of curves in some ambient space that satisfy prescribed conditions, such as the following:

How many conics pass through five given points in the plane?

How many lines pass through four given lines in three-space?

How many lines lie on the quintic threefold

in ?

The answer to the first of these questions was known to the ancient Greeks: given five (sufficiently general) points in , there is exactly one conic that passes through all five of them. The method by which the ancient Greeks would have arrived at this answer is by an explicit construction, given the coordinates of the five points, of the conic that passes through them.

The modern perspective on curve-counting is somewhat different. Rather than seeking explicit constructions of the curves being counted—which can be unnecessarily cumbersome if our ultimate goal is simply enumeration—one instead searches for answers that are deformation-invariant: for example, a count of conics through five given points that remains unchanged if the five points are slightly varied. This property not only allows us to answer entire families of questions simultaneously (not just “how many conics pass through these five points?” but “how many conics pass through any five general points?”), but it also introduces the possibility of answering a difficult question by deforming it to a simpler one.

For instance, suppose one wishes to answer the second question posed at the beginning of the article: how many lines pass through four given lines in ? If the answer to this question is deformation-invariant, then we can deform our lines until they meet in pairs, so that and . At this point, a bit of reflection is enough to see that there are exactly two lines passing through all four of our original lines: one that joins and , and one where the plane spanned by and meets the plane spanned by and .

The deformation-invariance of enumerations like this one was first proposed by Hermann Schubert in the 1870s under the name Prinzip der Erhaltung der Anzahl, or principle of convseration of number Sch79. But exactly when does this principle hold, and why? A rigorous explanation of Schubert’s enumerations was missing from the mathematical literature for decades, and the hunt for such an explanation was deemed important enough to appear on Hilbert’s famous list of 23 unsolved problems that shaped twentieth-century mathematics, in which the fifteenth problem is listed (in the English translation that appeared in the Bulletin of the AMS in 1902) as “rigorous foundation of Schubert’s enumerative calculus.”

The solution to Hilbert’s fifteenth problem came in the second half of the twentieth century, with the twin developments of moduli spaces and intersection theory. A moduli space, roughly speaking, is a geometric space (often a variety or manifold) in which each point corresponds to an object of some type being studied. For example, someone wishing to study the number of conics passing through five points in the plane might form a moduli space in which each point corresponds to a plane conic. From this perspective, the conics passing through a given point form a subvariety of , and the original enumerative question is reinterpreted as a count of the number of intersection points of the five corresponding subvarieties. The advantage of this reframing is that it allows curve-counting questions to be attacked via the tools of intersection theory, a deep mathematical subject studying the structure of intersections within an ambient variety that was developed (in large part with precisely the application to Hilbert’s fifteenth problem in mind) over many decades in the early twentieth century.

Through the lens of intersection theory, one can see more clearly the sense in which curve counts are—or are not—deformation-invariant. First, an intersection theory problem generally only has a deformation-invariant answer when one works over an algebraically closed field (for instance, rather than ) and within a compact ambient variety. To illustrate the first of these limitations, consider the intersection of the parabola and the line in . These curves intersect in two points for , but for , the intersection points are only visible if we work not in but in . In fact, so long as we count intersections “with multiplicity,” the parabola and the line in meet in exactly two points for any choice of .

To see why compactness is necessary, consider the question “in how many points do two lines in intersect?” The answer to this question can change when the lines are deformed, because the lines can become parallel, which effectively means that their point of intersection has “fallen off” the noncompact ambient space . To avoid this phenomenon, one should replace by its compactification , in which any two lines indeed meet in a single point—so long as they are not the same line.

This brings us to one final issue of deformation-invariance that intersection theory is equipped to solve: can an intersection still be said to be deformation-invariant if the subvarieties are deformed so far that they meet along an entire curve? For instance, is there a sensible way in which to interpret the “number of intersection points” of two identical lines in as , so that this number is truly insensitive to deformations of the lines? The answer to this question is “yes,” and it is precisely what the subject of excess intersection theory addresses.

Applying these ideas to the context of enumerative geometry led mathematicians, in the late twentieth century, to express curve counts as certain intersection numbers on a moduli space that are now called Gromov–Witten invariants. This development allowed the deformation-invariance of curve counts to finally be expressed in a robust and rigorous way, but the work was far from over. In particular, the project of actually computing Gromov–Witten invariants is difficult and ongoing, and moreover, there are other methods of formalizing curve counts (such as Donaldson–Thomas theory) whose relationship to Gromov–Witten theory is not obvious. One breakthrough in the subject came in the 1990s from an unexpected interaction between curve-counting and the theoretical physics of string theory, and in the decades since then, this interdisciplinary connection has continued to yield fruit.

The Moduli Space of Stable Maps

We begin our journey toward defining Gromov–Witten invariants by fixing an ambient space in which we will count curves. For the reasons mentioned above, we will always assume that is compact and the ground field is ; for instance, if our goal is to count conics passing through five given points in the plane, “the plane” refers to . We also fix the degree of the curves being counted and the number of incidence conditions being imposed, so in the above example, and . To put things a bit more precisely, should be a smooth projective variety and an element of , so setting in our example really means , where is the homology class of a line in . What we will count is maps , where is a curve, , and the image of satisfies the requisite incidence conditions. In order for our count to be finite in general, we must fix one further piece of information: the genus of the source curve . In our example of conics through five points, this choice is forced upon us if we want our count to include the embedded irreducible conics in , since the genus-degree formula implies that for these.

Having fixed the data of , , , and , we now define a moduli space in which we will interpret our curve count as an intersection theory problem. As we have seen, we should look for a compact moduli space if we want any hope that our count will be deformation-invariant. Unfortunately, this means that we cannot restrict ourselves to including only maps for which is a smooth curve, nor for which is an embedding, even if these are the types of maps we really care about; the issue is that these “nice” maps may degenerate to less nice ones.

To produce a compact moduli space, one must allow some degeneracies. This can be done while keeping the singularities of the curves mild; specifically, we will consider nodal curves, which can roughly be viewed as the result of gluing together a collection of smooth curves at finitely many pairs of points, as illustrated in Figure 1. The trade-off for the mildness of these singularities is that the map may become quite degenerate, possibly collapsing entire components to a point. The result is the following key player in our story.

Definition 1.

The moduli space of stable maps is the set consisting of (isomorphism classes of) tuples , where

is a nodal curve of arithmetic genus ;

are distinct and not nodes;

is a morphism with ;

the data has finitely many automorphisms.

Figure 1.

A nodal curve of arithmetic genus five.

\renewcommand{\arraystretch}{1} \setlength{\unitlength}{1.0pt} \setlength{\extrarowheight}{0.0pt}\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-0.65,xscale=0.65] \draw(314,110.75) .. controls (314,86.31) and (334.04,66.5) .. (358.75,66.5) .. controls (383.46,66.5) and (403.5,86.31) .. (403.5,110.75) .. controls (403.5,135.19) and (383.46,155) .. (358.75,155) .. controls (334.04,155) and (314,135.19) .. (314,110.75) -- cycle ; \draw[dash pattern={on 4.5pt off 4.5pt}] (314.38,107.35) .. controls (328.22,97.09) and (341.7,94.94) .. (359.93,95.07) .. controls (378.15,95.2) and (397.57,103.26) .. (403.5,110.75) ; \draw(314.66,109.26) .. controls (317.29,112.61) and (329.34,116.33) .. (333.48,117.82) .. controls (337.62,119.31) and (356.6,122.79) .. (376.77,119.31) .. controls (396.94,115.83) and (398.97,114.11) .. (403.5,110.75) ; \draw(403.5,112.5) .. controls (403.5,88.2) and (431.48,68.5) .. (466,68.5) .. controls (500.52,68.5) and (528.5,88.2) .. (528.5,112.5) .. controls (528.5,136.8) and (500.52,156.5) .. (466,156.5) .. controls (431.48,156.5) and (403.5,136.8) .. (403.5,112.5) -- cycle ; \draw(434.5,111.5) .. controls (450.5,126.5) and (475.5,129.5) .. (495.5,110.5) ; \draw(441.5,115.5) .. controls (456.5,100.5) and (475.5,99.5) .. (486.5,116.5) ; \draw(207.5,37.5) .. controls (225.5,23.5) and (253.5,19.5) .. (275.5,22.5) .. controls (297.5,25.5) and (323.33,61.6) .. (322.5,77.5) .. controls (321.67,93.4) and (310.61,95.48) .. (299,90) .. controls (287.39,84.52) and (275.5,69.5) .. (246.5,77.5) .. controls (217.5,85.5) and (206.08,120.51) .. (193.5,103.5) .. controls (180.92,86.49) and (189.5,51.5) .. (207.5,37.5) -- cycle ; \draw(200.5,108.5) .. controls (220.5,98.5) and (220.66,119.89) .. (240.5,126.5) .. controls (260.34,133.11) and (302.16,138.08) .. (313.5,135.5) .. controls (324.84,132.92) and (335.5,148.5) .. (319.5,165.5) .. controls (303.5,182.5) and (280.44,191.61) .. (255.5,190.5) .. controls (230.56,189.39) and (211.5,175.5) .. (203.5,163.5) .. controls (195.5,151.5) and (180.5,118.5) .. (200.5,108.5) -- cycle ; \draw(205.16,138.9) .. controls (213.22,154.65) and (231.09,163.13) .. (250.93,153.04) ; \draw(209.35,143.77) .. controls (224.42,135.61) and (238.85,139.47) .. (242.66,155.57) ; \draw(254,168.36) .. controls (270.59,176.52) and (290.68,172.36) .. (300.63,151.33) ; \draw(260.53,169.81) .. controls (267.78,153.42) and (282.11,147.55) .. (295.42,158.68) ; \draw(226.43,49.52) .. controls (239.76,62.51) and (261.16,65.73) .. (278.87,50.42) ; \draw(232.33,53.07) .. controls (245.63,40.96) and (261.98,40.66) .. (270.97,55.18) ; \end{tikzpicture}

We will abbreviate for now. The last condition in the definition may appear technical—and relies on a definition of “isomorphism” that we have not specified—but, as we will see momentarily, it turns out to be crucial in ensuring that the moduli space is well-behaved from a geometric perspective.

But what is , as a geometric object? Thus far, we have defined it as a set, but what makes it a “moduli space” is that it can be given a geometry that encodes how tuples can continuously vary. For example, once is given a geometric structure, it makes sense to speak of a “path” in , and the elements of that one passes through while walking along this path should form a one-parameter family of tuples . Figure 2 is a cartoon illustration of this phenomenon.

Figure 2.

A one-parameter family of curves.

\renewcommand{\arraystretch}{1} \setlength{\unitlength}{1.0pt} \setlength{\extrarowheight}{0.0pt}\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-0.55,xscale=0.55] \node at (425,225) {$\overline{\mathcal{M}}_{2,1}$}; \draw[fill={rgb, 255:red, 155; green, 155; blue, 155 } ,fill opacity=0.26 ] (114.5,127.33) .. controls (134.5,117.33) and (141.5,108.33) .. (191.5,125.33) .. controls (241.5,142.33) and (336.67,104.93) .. (406.5,108.33) .. controls (476.33,111.74) and (487.1,147.95) .. (486.5,187.33) .. controls (485.9,226.72) and (455.99,242.1) .. (451.5,247.33) .. controls (447.01,252.57) and (373.71,286.27) .. (316.6,260.8) .. controls (259.5,235.33) and (189,253.83) .. (117.5,226.33) .. controls (46,198.83) and (94.5,137.33) .. (114.5,127.33) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][line width=1.5] (150.5,223.5) .. controls (171.02,208.11) and (228.5,164.5) .. (290.5,176.5) .. controls (352.5,188.5) and (406.02,176.11) .. (425.5,161.5) ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][fill={rgb, 255:red, 189; green, 16; blue, 224 } ,fill opacity=1 ] (177.5,202.75) .. controls (177.5,200.68) and (179.29,199) .. (181.5,199) .. controls (183.71,199) and (185.5,200.68) .. (185.5,202.75) .. controls (185.5,204.82) and (183.71,206.5) .. (181.5,206.5) .. controls (179.29,206.5) and (177.5,204.82) .. (177.5,202.75) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][fill={rgb, 255:red, 245; green, 166; blue, 35 } ,fill opacity=1 ] (229.5,179.42) .. controls (229.5,177.35) and (231.29,175.67) .. (233.5,175.67) .. controls (235.71,175.67) and (237.5,177.35) .. (237.5,179.42) .. controls (237.5,181.49) and (235.71,183.17) .. (233.5,183.17) .. controls (231.29,183.17) and (229.5,181.49) .. (229.5,179.42) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][fill={rgb, 255:red, 65; green, 117; blue, 5 } ,fill opacity=1 ] (300.5,178.75) .. controls (300.5,176.68) and (302.29,175) .. (304.5,175) .. controls (306.71,175) and (308.5,176.68) .. (308.5,178.75) .. controls (308.5,180.82) and (306.71,182.5) .. (304.5,182.5) .. controls (302.29,182.5) and (300.5,180.82) .. (300.5,178.75) -- cycle ; \draw[color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ][fill={rgb, 255:red, 208; green, 2; blue, 27 } ,fill opacity=1 ] (379.5,176.75) .. controls (379.5,174.68) and (381.29,173) .. (383.5,173) .. controls (385.71,173) and (387.5,174.68) .. (387.5,176.75) .. controls (387.5,178.82) and (385.71,180.5) .. (383.5,180.5) .. controls (381.29,180.5) and (379.5,178.82) .. (379.5,176.75) -- cycle ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ] (141.57,166.23) .. controls (148.41,158.08) and (174.06,155.36) .. (183.74,163.51) .. controls (193.43,171.66) and (192.86,183.21) .. (182.6,187.96) .. controls (172.35,192.72) and (147.27,190.68) .. (141,185.92) .. controls (134.73,181.17) and (134.73,174.38) .. (141.57,166.23) -- cycle ; \draw[draw opacity=0] (160.63,172.9) .. controls (160.4,176.87) and (157.19,179.92) .. (153.3,179.78) .. controls (149.62,179.65) and (146.61,176.71) .. (146.17,173.02) -- (153.38,172.26) -- cycle ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ] (160.63,172.9) .. controls (160.4,176.87) and (157.19,179.92) .. (153.3,179.78) .. controls (149.62,179.65) and (146.61,176.71) .. (146.17,173.02) ; \draw[draw opacity=0] (159.31,176.88) .. controls (159.07,174.81) and (156.39,173.2) .. (153.1,173.23) .. controls (150.09,173.24) and (147.57,174.61) .. (146.93,176.42) -- (153.05,177.24) -- cycle ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ] (159.31,176.88) .. controls (159.07,174.81) and (156.39,173.2) .. (153.1,173.23) .. controls (150.09,173.24) and (147.57,174.61) .. (146.93,176.42) ; \draw[draw opacity=0] (181.72,172.9) .. controls (181.49,176.87) and (178.28,179.92) .. (174.39,179.78) .. controls (170.71,179.65) and (167.7,176.71) .. (167.26,173.02) -- (174.47,172.26) -- cycle ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ] (181.72,172.9) .. controls (181.49,176.87) and (178.28,179.92) .. (174.39,179.78) .. controls (170.71,179.65) and (167.7,176.71) .. (167.26,173.02) ; \draw[draw opacity=0] (180.78,176.54) .. controls (180.54,174.47) and (177.85,172.87) .. (174.56,172.89) .. controls (171.56,172.9) and (169.03,174.27) .. (168.4,176.08) -- (174.52,176.91) -- cycle ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ] (180.78,176.54) .. controls (180.54,174.47) and (177.85,172.87) .. (174.56,172.89) .. controls (171.56,172.9) and (169.03,174.27) .. (168.4,176.08) ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ] (205.49,140.22) .. controls (214.14,131.18) and (222.13,138.45) .. (233.27,137.83) .. controls (244.4,137.22) and (252.96,132.85) .. (258.88,137.21) .. controls (264.8,141.57) and (270.43,159.04) .. (257.44,164.31) .. controls (244.45,169.58) and (243.47,160.87) .. (233.27,160.42) .. controls (223.06,159.97) and (208.88,164.78) .. (204.76,162.05) .. controls (200.65,159.32) and (196.83,149.25) .. (205.49,140.22) -- cycle ; \draw[draw opacity=0] (229.61,147.68) .. controls (229.29,152.05) and (225.24,155.4) .. (220.34,155.24) .. controls (215.74,155.1) and (211.96,151.92) .. (211.33,147.91) -- (220.44,146.91) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ] (229.61,147.68) .. controls (229.29,152.05) and (225.24,155.4) .. (220.34,155.24) .. controls (215.74,155.1) and (211.96,151.92) .. (211.33,147.91) ; \draw[draw opacity=0] (227.94,151.98) .. controls (227.59,149.71) and (224.21,147.95) .. (220.08,147.98) .. controls (216.35,148) and (213.21,149.45) .. (212.33,151.39) -- (220.02,152.43) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ] (227.94,151.98) .. controls (227.59,149.71) and (224.21,147.95) .. (220.08,147.98) .. controls (216.35,148) and (213.21,149.45) .. (212.33,151.39) ; \draw[draw opacity=0] (256.31,147.68) .. controls (255.98,152.05) and (251.94,155.4) .. (247.04,155.24) .. controls (242.44,155.1) and (238.66,151.92) .. (238.03,147.91) -- (247.13,146.91) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ] (256.31,147.68) .. controls (255.98,152.05) and (251.94,155.4) .. (247.04,155.24) .. controls (242.44,155.1) and (238.66,151.92) .. (238.03,147.91) ; \draw[draw opacity=0] (255.12,151.6) .. controls (254.77,149.33) and (251.39,147.58) .. (247.25,147.6) .. controls (243.53,147.62) and (240.39,149.07) .. (239.51,151.01) -- (247.2,152.06) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ] (255.12,151.6) .. controls (254.77,149.33) and (251.39,147.58) .. (247.25,147.6) .. controls (243.53,147.62) and (240.39,149.07) .. (239.51,151.01) ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ] (287.09,140.75) .. controls (294.75,133.75) and (303.1,145.79) .. (312.96,145.14) .. controls (322.81,144.48) and (323.75,135.25) .. (334.35,137.56) .. controls (344.95,139.87) and (344.46,158.17) .. (332.97,163.75) .. controls (321.47,169.34) and (320.28,160.23) .. (311.25,159.75) .. controls (302.22,159.27) and (299.25,165.75) .. (291.67,163.22) .. controls (284.08,160.69) and (279.43,147.75) .. (287.09,140.75) -- cycle ; \draw[draw opacity=0] (308.45,148.57) .. controls (308.2,153.24) and (304.6,156.83) .. (300.24,156.67) .. controls (296.09,156.51) and (292.71,153.03) .. (292.24,148.68) -- (300.32,147.84) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ] (308.45,148.57) .. controls (308.2,153.24) and (304.6,156.83) .. (300.24,156.67) .. controls (296.09,156.51) and (292.71,153.03) .. (292.24,148.68) ; \draw[draw opacity=0] (306.97,153.28) .. controls (306.71,150.84) and (303.7,148.95) .. (300,148.97) .. controls (296.61,148.99) and (293.77,150.62) .. (293.08,152.77) -- (299.96,153.69) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ] (306.97,153.28) .. controls (306.71,150.84) and (303.7,148.95) .. (300,148.97) .. controls (296.61,148.99) and (293.77,150.62) .. (293.08,152.77) ; \draw[draw opacity=0] (332.08,148.57) .. controls (331.83,153.24) and (328.23,156.83) .. (323.87,156.67) .. controls (319.73,156.51) and (316.34,153.03) .. (315.87,148.68) -- (323.95,147.84) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ] (332.08,148.57) .. controls (331.83,153.24) and (328.23,156.83) .. (323.87,156.67) .. controls (319.73,156.51) and (316.34,153.03) .. (315.87,148.68) ; \draw[draw opacity=0] (331.03,152.88) .. controls (330.77,150.44) and (327.76,148.55) .. (324.06,148.57) .. controls (320.67,148.59) and (317.82,150.22) .. (317.14,152.37) -- (324.01,153.29) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ] (331.03,152.88) .. controls (330.77,150.44) and (327.76,148.55) .. (324.06,148.57) .. controls (320.67,148.59) and (317.82,150.22) .. (317.14,152.37) ; \draw[color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (354.88,141.62) .. controls (363.25,134.25) and (368.94,138.19) .. (373.75,142.25) .. controls (378.56,146.31) and (376.84,146.99) .. (380.75,146.75) .. controls (384.66,146.51) and (389.75,136.75) .. (400.25,140.25) .. controls (410.75,143.75) and (409.84,164.25) .. (395.66,164.75) .. controls (381.47,165.26) and (385.02,156.21) .. (380.59,156.21) .. controls (376.15,156.21) and (377.04,158.72) .. (373.05,161.74) .. controls (369.06,164.75) and (364.25,167.75) .. (357.54,164.25) .. controls (350.83,160.75) and (346.51,149) .. (354.88,141.62) -- cycle ; \draw[draw opacity=0] (374.56,149.94) .. controls (374.28,154.34) and (370.54,157.71) .. (366.02,157.56) .. controls (361.74,157.41) and (358.24,154.18) .. (357.7,150.11) -- (366.11,149.21) -- cycle ; \draw[color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (374.56,149.94) .. controls (374.28,154.34) and (370.54,157.71) .. (366.02,157.56) .. controls (361.74,157.41) and (358.24,154.18) .. (357.7,150.11) ; \draw[draw opacity=0] (373.02,154.32) .. controls (372.73,152.03) and (369.6,150.26) .. (365.77,150.28) .. controls (362.29,150.3) and (359.37,151.8) .. (358.6,153.78) -- (365.72,154.74) -- cycle ; \draw[color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (373.02,154.32) .. controls (372.73,152.03) and (369.6,150.26) .. (365.77,150.28) .. controls (362.29,150.3) and (359.37,151.8) .. (358.6,153.78) ; \draw[draw opacity=0] (399.16,149.94) .. controls (398.88,154.34) and (395.14,157.71) .. (390.61,157.56) .. controls (386.34,157.41) and (382.84,154.18) .. (382.3,150.11) -- (390.7,149.21) -- cycle ; \draw[color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (399.16,149.94) .. controls (398.88,154.34) and (395.14,157.71) .. (390.61,157.56) .. controls (386.34,157.41) and (382.84,154.18) .. (382.3,150.11) ; \draw[draw opacity=0] (398.06,153.94) .. controls (397.77,151.66) and (394.65,149.88) .. (390.81,149.9) .. controls (387.34,149.92) and (384.41,151.42) .. (383.64,153.41) -- (390.77,154.37) -- cycle ; \draw[color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (398.06,153.94) .. controls (397.77,151.66) and (394.65,149.88) .. (390.81,149.9) .. controls (387.34,149.92) and (384.41,151.42) .. (383.64,153.41) ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][fill={rgb, 255:red, 189; green, 16; blue, 224 } ,fill opacity=1 ] (172.83,165.5) .. controls (172.83,164.49) and (173.54,163.67) .. (174.42,163.67) .. controls (175.29,163.67) and (176,164.49) .. (176,165.5) .. controls (176,166.51) and (175.29,167.33) .. (174.42,167.33) .. controls (173.54,167.33) and (172.83,166.51) .. (172.83,165.5) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][fill={rgb, 255:red, 245; green, 166; blue, 35 } ,fill opacity=1 ] (247.5,140.83) .. controls (247.5,139.82) and (248.21,139) .. (249.08,139) .. controls (249.96,139) and (250.67,139.82) .. (250.67,140.83) .. controls (250.67,141.85) and (249.96,142.67) .. (249.08,142.67) .. controls (248.21,142.67) and (247.5,141.85) .. (247.5,140.83) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][fill={rgb, 255:red, 65; green, 117; blue, 5 } ,fill opacity=1 ] (325.83,143.5) .. controls (325.83,142.49) and (326.54,141.67) .. (327.42,141.67) .. controls (328.29,141.67) and (329,142.49) .. (329,143.5) .. controls (329,144.51) and (328.29,145.33) .. (327.42,145.33) .. controls (326.54,145.33) and (325.83,144.51) .. (325.83,143.5) -- cycle ; \draw[color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ][fill={rgb, 255:red, 208; green, 2; blue, 27 } ,fill opacity=1 ] (392.5,144.83) .. controls (392.5,143.82) and (393.21,143) .. (394.08,143) .. controls (394.96,143) and (395.67,143.82) .. (395.67,144.83) .. controls (395.67,145.85) and (394.96,146.67) .. (394.08,146.67) .. controls (393.21,146.67) and (392.5,145.85) .. (392.5,144.83) -- cycle ; \end{tikzpicture}

Thus, in order to give a geometry, one must first decide upon a definition of family of stable maps over any base ; a one-parameter family, for instance, is a family in which is a line. From here, what it means to say that the geometry of encodes how stable maps vary is that, for any base , there is a bijection

This, in particular, relies on giving a geometry in order to make the notion of “morphism” meaningful.

Up to this point, we have been purposefully vague about what we mean by “geometry.” A topologist might hope that is a manifold, or an algebraic geometer might hope that it is a variety. Unfortunately, neither can be the case: a manifold or variety for which 1 is a bijection does not, in fact, exist. The root of the problem lies in the existence of automorphisms of stable maps, which allow one to construct families in which every stable map in the family is isomorphic to every other (so they should correspond to constant maps on the right-hand side of 1), but which are nevertheless nontrivial as families. See Figure 3 for a cartoon illustration.

Figure 3.

A nontrivial family of curves in which every fiber is isomorphic. (The tori over each point of should be viewed as fitting together into something of a Möbius band, so that as one moves in a full circle around , the initial torus is identified with the final torus via a nontrivial automorphism.)

\renewcommand{\arraystretch}{1} \setlength{\unitlength}{1.0pt} \setlength{\extrarowheight}{0.0pt}\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-0.35,xscale=0.35] \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][line width=1.5] (370.81,219.75) .. controls (390.14,219.64) and (406.01,254.59) .. (406.25,297.8) .. controls (406.49,341.02) and (391.02,376.14) .. (371.69,376.25) .. controls (352.36,376.36) and (336.49,341.41) .. (336.25,298.2) .. controls (336.01,254.98) and (351.48,219.86) .. (370.81,219.75) -- cycle ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][line width=1.5] (374.16,253.73) .. controls (366.64,265.28) and (360.59,269.31) .. (360.7,289.31) .. controls (360.81,309.31) and (361.89,320.3) .. (376.14,335.22) ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][line width=1.5] (368.15,264.77) .. controls (381.94,286.19) and (376.99,306.22) .. (367.98,323.27) ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][line width=1.5] (523.64,141.98) .. controls (539.21,153.44) and (531.06,190.95) .. (505.44,225.75) .. controls (479.81,260.55) and (446.43,279.48) .. (430.86,268.02) .. controls (415.29,256.56) and (423.44,219.05) .. (449.06,184.25) .. controls (474.69,149.45) and (508.07,130.52) .. (523.64,141.98) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][line width=1.5] (506.03,171.24) .. controls (493.1,176) and (485.84,175.62) .. (473.98,191.73) .. controls (462.12,207.83) and (456.42,217.29) .. (458.93,237.77) ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][line width=1.5] (494.62,176.5) .. controls (492.87,201.91) and (476.94,215.02) .. (459.53,223.31) ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][line width=1.5] (391.5,146.39) .. controls (391.65,165.71) and (356.74,181.66) .. (313.52,182) .. controls (270.31,182.34) and (235.15,166.94) .. (235,147.61) .. controls (234.85,128.29) and (269.76,112.34) .. (312.98,112) .. controls (356.19,111.66) and (391.35,127.06) .. (391.5,146.39) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][line width=1.5] (357.52,149.81) .. controls (345.96,142.31) and (341.92,136.27) .. (321.92,136.43) .. controls (301.92,136.59) and (290.93,137.69) .. (276.04,151.97) ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][line width=1.5] (346.48,143.83) .. controls (325.08,157.66) and (305.04,152.76) .. (287.97,143.78) ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][line width=1.5] (217.71,260.87) .. controls (205.14,275.56) and (168.33,264.69) .. (135.5,236.59) .. controls (102.66,208.5) and (86.23,173.82) .. (98.79,159.13) .. controls (111.36,144.44) and (148.17,155.31) .. (181,183.41) .. controls (213.84,211.5) and (230.27,246.18) .. (217.71,260.87) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][line width=1.5] (189.82,241.17) .. controls (186.01,227.93) and (186.92,220.71) .. (171.72,207.71) .. controls (156.53,194.71) and (147.51,188.33) .. (126.9,189.34) ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][line width=1.5] (185.41,229.41) .. controls (160.19,225.81) and (148.28,208.96) .. (141.28,190.99) ; \draw[line width=1.5] (214,450.25) .. controls (214,428.85) and (263.36,411.5) .. (324.25,411.5) .. controls (385.14,411.5) and (434.5,428.85) .. (434.5,450.25) .. controls (434.5,471.65) and (385.14,489) .. (324.25,489) .. controls (263.36,489) and (214,471.65) .. (214,450.25) -- cycle ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][line width=1.5] (207.5,281) -- (208.48,436) ; \draw[shift={(208.5,439)}, rotate = 269.64] [color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][line width=1.5] (14.21,-4.28) .. controls (9.04,-1.82) and (4.3,-0.39) .. (0,0) .. controls (4.3,0.39) and (9.04,1.82) .. (14.21,4.28) ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][line width=1.5] (318.5,190) -- (319.41,381.99) -- (319.49,398) ; \draw[shift={(319.5,401)}, rotate = 269.73] [color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][line width=1.5] (14.21,-4.28) .. controls (9.04,-1.82) and (4.3,-0.39) .. (0,0) .. controls (4.3,0.39) and (9.04,1.82) .. (14.21,4.28) ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][line width=1.5] (436.5,281) -- (437.48,436) ; \draw[shift={(437.5,439)}, rotate = 269.64] [color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][line width=1.5] (14.21,-4.28) .. controls (9.04,-1.82) and (4.3,-0.39) .. (0,0) .. controls (4.3,0.39) and (9.04,1.82) .. (14.21,4.28) ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][line width=1.5] (363.5,382) -- (330.47,478.16) ; \draw[shift={(329.5,481)}, rotate = 288.95] [color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][line width=1.5] (14.21,-4.28) .. controls (9.04,-1.82) and (4.3,-0.39) .. (0,0) .. controls (4.3,0.39) and (9.04,1.82) .. (14.21,4.28) ; \draw[color={rgb, 255:red, 65; green, 117; blue, 5 } ,draw opacity=1 ][fill={rgb, 255:red, 65; green, 117; blue, 5 } ,fill opacity=1 ] (209.75,450.25) .. controls (209.75,447.76) and (211.65,445.75) .. (214,445.75) .. controls (216.35,445.75) and (218.25,447.76) .. (218.25,450.25) .. controls (218.25,452.74) and (216.35,454.75) .. (214,454.75) .. controls (211.65,454.75) and (209.75,452.74) .. (209.75,450.25) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (315.75,411.5) .. controls (315.75,409.01) and (317.65,407) .. (320,407) .. controls (322.35,407) and (324.25,409.01) .. (324.25,411.5) .. controls (324.25,413.99) and (322.35,416) .. (320,416) .. controls (317.65,416) and (315.75,413.99) .. (315.75,411.5) -- cycle ; \draw[color={rgb, 255:red, 189; green, 16; blue, 224 } ,draw opacity=1 ][fill={rgb, 255:red, 189; green, 16; blue, 224 } ,fill opacity=1 ] (320,489) .. controls (320,486.51) and (321.9,484.5) .. (324.25,484.5) .. controls (326.6,484.5) and (328.5,486.51) .. (328.5,489) .. controls (328.5,491.49) and (326.6,493.5) .. (324.25,493.5) .. controls (321.9,493.5) and (320,491.49) .. (320,489) -- cycle ; \draw[color={rgb, 255:red, 245; green, 166; blue, 35 } ,draw opacity=1 ][fill={rgb, 255:red, 245; green, 166; blue, 35 } ,fill opacity=1 ] (430.25,450.25) .. controls (430.25,447.76) and (432.15,445.75) .. (434.5,445.75) .. controls (436.85,445.75) and (438.75,447.76) .. (438.75,450.25) .. controls (438.75,452.74) and (436.85,454.75) .. (434.5,454.75) .. controls (432.15,454.75) and (430.25,452.74) .. (430.25,450.25) -- cycle ; \draw(154,440.37) node [anchor=north west][inner sep=0.75pt] {$B$}; \end{tikzpicture}

There is a fix to this problem, which is to give the structure of an orbifold (or, in more modern language, a Deligne–Mumford stack); very roughly, this is a space that looks locally like the quotient of a manifold by a finite group. In the setting of , these finite groups are the automorphism groups of stable maps, which helps to explain why we insisted that a stable map have finitely many automorphisms. Equipped with the more general notion of morphism in the orbifold setting, a bijection as in 1 indeed exists.

Gromov–Witten Invariants

Now that we have a moduli space, our goal is to use it to count genus-, degree- curves in that satisfy a collection of incidence conditions—that is, that pass through a collection of prescribed subvarieties . In order to do so, we first define evaluation maps

for each , by

Then is the set of stable maps whose image passes through at , so one way in which to encode our desired curve count might be to count the number of points in the intersection

provided this intersection is finite. Inverse images generally preserve codimension, and intersections generally add codimension, so if , we would expect 2 to be finite—that is, to have dimension zero—when

A more refined version of 2, which captures its insensitivity to deformations of the subvarieties , would be to consider instead the cohomology class . We then interpret 2 in cohomology by replacing inverse image with pullback and intersection with cup product, yielding the following preliminary definition of a Gromov–Witten invariant.

Preliminary Definition 1.

Fix , and , and fix for . Assume that . Then the associated Gromov–Witten invariant is given by evaluating the cohomology class

on the fundamental class of to yield an element of . We denote this evaluation by

We will see shortly that this definition has some serious deficiencies that will need to be repaired, but taking it as a working definition for the moment, one sees that using it requires first of all knowing the dimension of . What is this dimension? Let us walk through how it might be computed, momentarily taking for simplicity.

If were a smooth manifold, then its dimension would be the same as the dimension of its tangent space at any point. Thinking of a point in as a stable map , and a tangent vector as an “infinitesimal family” of stable maps containing this one, we arrive at the perspective that the dimension of should be the dimension of the space of “infinitesimal deformations” of any given stable map. In the special case where is an embedding of a smooth curve, the space of such infinitesimal deformations can be identified with the space of sections of the normal bundle of , the intuition being that a section of the normal bundle gives a direction in which each point in can deform.

This reasoning leads to the guess that is the dimension of the vector space of sections of the normal bundle for any stable map . This guess cannot be correct, however, because the dimension of this vector space depends on . What is independent of is the difference

which equals

(The interested reader with some background in algebraic geometry is encouraged to verify this computation; the key ingredients are the short exact sequence

and the Riemann–Roch theorem.)

We refer to the quantity 3 as the virtual dimension of . Similar reasoning applies when is nonzero, yielding the following.

Definition 2.

The virtual dimension of , denoted , is the integer

The idea, from a deformation-theoretic perspective, is that while parameterizes infinitesimal deformations of a stable map, parameterizes obstructions to extending these infinitesimal deformations to honest deformations over some base. We thus denote it by in the case where , and we denote the analogue more generally by .

If it happens that for all stable maps in the moduli space, then the virtual dimension is the dimension of the space of infinitesimal deformations, which, by the above reasoning, is equal to the dimension of the moduli space. This happens, albeit rarely; for instance, it happens when and , as well as when is a single point.

If, however, for some stable maps in the moduli space, then the dimension of the space of infinitesimal deformations of these stable maps is higher than the virtual dimension, and it may vary from one stable map to another. This is a reflection of the fact that can have multiple irreducible components of different dimensions, all of which are bounded below by the virtual dimension.

A simplified perspective may give a flavor of these ideas: imagine that is given by the vanishing of equations in a smooth -dimensional variety. Then the dimension that one would expect to have is , and this is certainly true when , in the same way that the dimension of is equal to the virtual dimension when the obstructions vanish. But when , dependencies among the defining equations may lead the actual dimension of to be larger than expected, or even to vary from one component of to another; for instance, the vanishing of the equations and in consists of the line (which has the expected dimension) together with the plane (which has larger dimension).

With all of this in mind, we now see two problems with our preliminary definition of Gromov–Witten invariants. First, because may have different components of different dimensions, it is unclear how to make sense of the condition that is equal to the dimension of the moduli space. And second, because it has multiple irreducible components, is in general not smooth, so it need not have a fundamental class on which to evaluate.

The solution to these problems lies in constructing a virtual fundamental class, an element

that agrees with the fundamental class in the special situations where the moduli space is smooth of dimension equal to the virtual dimension. It is a hard theorem, first due to Behrend–Fantechi in the algebro-geometric setting BF97 and to Li–Tian in the related setting of symplectic geometry LT98, that a natural such class exists.

To give a very rough intuition in the simplified vision of as a vanishing locus inside a smooth -dimensional variety , suppose that the defining equations of correspond to a section of a rank- vector bundle on , so that . In this setting, what we seek is a -dimensional homology class supported on . If meets the zero section of transversally, this can be done by simply taking . On the opposite end of the spectrum, if is identically zero, it can be done by taking , where denotes the top Chern class; roughly, this amounts to perturbing to a transverse section and then taking its zero locus. In practice, however, such a perturbation may not exist, and even if it does, it is unclear how to use the vanishing of the perturbation to produce a homology class supported on . The hard work of defining a virtual fundamental class lies in surmounting these difficulties, and doing so even when is not given as a vanishing locus in a smooth ambient variety.

Once the virtual fundamental class is constructed, we are at last ready to give the true definition of Gromov–Witten invariants.

Definition 3.

Fix , and , and fix for each . Assume that . Then the associated Gromov–Witten invariant is

At this point, we have gotten quite far afield of our initial goal of counting curves. Thus, at least two questions are in order. First, do Gromov–Witten invariants agree with a more naïve notion of curve counts, when the latter is possible? And second, how can Gromov–Witten invariants be computed?

The answer to the first question is sometimes—though admittedly rarely—yes. For instance, we have mentioned that the virtual fundamental class is the ordinary fundamental class on , and in this case, the locus of smooth embedded curves is dense in the moduli space. Thus, the Gromov–Witten invariant associated to genuinely counts the number of genus-zero degree- embedded curves in in which lie in generic subvarieties representing the cohomology classes . As an example, one could calculate the number of conics through five generic points in as the Gromov–Witten invariant

where denotes the cohomology class of a point.

This situation is rare, though. In fact, the possibility that has orbifold structure means that Gromov–Witten invariants are not even necessarily integers but rational numbers in general, so it is difficult to interpret them as counting anything at all. A particularly stark—yet fascinating—example occurs when is a quintic threefold in , for which and hence . Taking , one might hope to interpret the Gromov–Witten invariant

as counting the number of degree- embedded rational curves on , but this cannot be the case. Indeed, for any divisor of , one can obtain a degree- map by composing a -fold cover with a degree- map , and there is a positive-dimensional family of such covers. This means that has components of excess dimension, which contribute in a complicated way to 5. The BPS conjecture suggests a way to account for these contributions to extract integers (called Gopakumar–Vafa invariants) from Gromov–Witten invariants in this case, but this is a longer story that we will not delve into here.

Instead, we will simply content ourselves with attempting to compute Gromov–Witten invariants, out of the philosophy that this is a worthwhile goal even when we are not in the rare situations when the invariants are enumerative. In particular, Gromov–Witten invariants have beautiful structure that is worth studying in its own right; we will see one example of this at the end of the article when we discuss mirror symmetry. Various other connections to theoretical physics as well as to more classical algebro-geometric subjects like the moduli space of curves have motivated mathematicians to study Gromov–Witten theory. Thus, as often happens in mathematics, our initial goal (curve-counting) has led us to an object (Gromov–Witten invariants) that is interesting regardless of the extent to which it actually achieves the goal.

How, then, to calculate Gromov–Witten invariants? This is a difficult question, in many cases prohibitively difficult, but there are important situations in which computation is possible. The first such situation we consider is when and , which was famously addressed by Kontsevich.

Kontsevich’s Formula

To explain Kontsevich’s computation, we first note that in the case where the target is a single point, the moduli space was studied well before the advent of Gromov–Witten theory, and remains a topic of active research. This study is advantageous to us because, for any target , there is a map , so—at least in good situations where is a smooth manifold—an understanding of the cohomology of can be pulled back to yield information about the Gromov–Witten invariants of . A particularly good situation occurs when and ; then, there is a morphism

whose codomain can be understood very concretely. First, when is smooth, there is a unique isomorphism sending to for some , so the locus of smooth curves in is isomorphic to . The compactification, then, must be , and indeed, the three missing points correspond to the nodal curves shown in Figure 4, which we denote by , , and , respectively.

Figure 4.

The three nodal curves in .

\renewcommand{\arraystretch}{1} \setlength{\unitlength}{1.0pt} \setlength{\extrarowheight}{0.0pt}\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-0.55,xscale=0.55] \draw(54,59.75) .. controls (54,35.31) and (74.04,15.5) .. (98.75,15.5) .. controls (123.46,15.5) and (143.5,35.31) .. (143.5,59.75) .. controls (143.5,84.19) and (123.46,104) .. (98.75,104) .. controls (74.04,104) and (54,84.19) .. (54,59.75) -- cycle ; \draw[dash pattern={on 4.5pt off 4.5pt}] (54.38,56.35) .. controls (68.22,46.09) and (81.7,43.94) .. (99.93,44.07) .. controls (118.15,44.2) and (137.57,52.26) .. (143.5,59.75) ; \draw(54.66,58.26) .. controls (57.29,61.61) and (69.34,65.33) .. (73.48,66.82) .. controls (77.62,68.31) and (96.6,71.79) .. (116.77,68.31) .. controls (136.94,64.83) and (138.97,63.11) .. (143.5,59.75) ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (64,41) .. controls (64,39.34) and (65.46,38) .. (67.25,38) .. controls (69.04,38) and (70.5,39.34) .. (70.5,41) .. controls (70.5,42.66) and (69.04,44) .. (67.25,44) .. controls (65.46,44) and (64,42.66) .. (64,41) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (76,30) .. controls (76,28.34) and (77.46,27) .. (79.25,27) .. controls (81.04,27) and (82.5,28.34) .. (82.5,30) .. controls (82.5,31.66) and (81.04,33) .. (79.25,33) .. controls (77.46,33) and (76,31.66) .. (76,30) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (206,30) .. controls (206,28.34) and (207.46,27) .. (209.25,27) .. controls (211.04,27) and (212.5,28.34) .. (212.5,30) .. controls (212.5,31.66) and (211.04,33) .. (209.25,33) .. controls (207.46,33) and (206,31.66) .. (206,30) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (217,44) .. controls (217,42.34) and (218.46,41) .. (220.25,41) .. controls (222.04,41) and (223.5,42.34) .. (223.5,44) .. controls (223.5,45.66) and (222.04,47) .. (220.25,47) .. controls (218.46,47) and (217,45.66) .. (217,44) -- cycle ; \draw(144,60.75) .. controls (144,36.31) and (164.04,16.5) .. (188.75,16.5) .. controls (213.46,16.5) and (233.5,36.31) .. (233.5,60.75) .. controls (233.5,85.19) and (213.46,105) .. (188.75,105) .. controls (164.04,105) and (144,85.19) .. (144,60.75) -- cycle ; \draw[dash pattern={on 4.5pt off 4.5pt}] (144.38,57.35) .. controls (158.22,47.09) and (171.7,44.94) .. (189.93,45.07) .. controls (208.15,45.2) and (227.57,53.26) .. (233.5,60.75) ; \draw(144.66,59.26) .. controls (147.29,62.61) and (159.34,66.33) .. (163.48,67.82) .. controls (167.62,69.31) and (186.6,72.79) .. (206.77,69.31) .. controls (226.94,65.83) and (228.97,64.11) .. (233.5,60.75) ; \draw(308,61.75) .. controls (308,37.31) and (328.04,17.5) .. (352.75,17.5) .. controls (377.46,17.5) and (397.5,37.31) .. (397.5,61.75) .. controls (397.5,86.19) and (377.46,106) .. (352.75,106) .. controls (328.04,106) and (308,86.19) .. (308,61.75) -- cycle ; \draw[dash pattern={on 4.5pt off 4.5pt}] (308.38,58.35) .. controls (322.22,48.09) and (335.7,45.94) .. (353.93,46.07) .. controls (372.15,46.2) and (391.57,54.26) .. (397.5,61.75) ; \draw(308.66,60.26) .. controls (311.29,63.61) and (323.34,67.33) .. (327.48,68.82) .. controls (331.62,70.31) and (350.6,73.79) .. (370.77,70.31) .. controls (390.94,66.83) and (392.97,65.11) .. (397.5,61.75) ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (318,43) .. controls (318,41.34) and (319.46,40) .. (321.25,40) .. controls (323.04,40) and (324.5,41.34) .. (324.5,43) .. controls (324.5,44.66) and (323.04,46) .. (321.25,46) .. controls (319.46,46) and (318,44.66) .. (318,43) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (330,32) .. controls (330,30.34) and (331.46,29) .. (333.25,29) .. controls (335.04,29) and (336.5,30.34) .. (336.5,32) .. controls (336.5,33.66) and (335.04,35) .. (333.25,35) .. controls (331.46,35) and (330,33.66) .. (330,32) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (460,32) .. controls (460,30.34) and (461.46,29) .. (463.25,29) .. controls (465.04,29) and (466.5,30.34) .. (466.5,32) .. controls (466.5,33.66) and (465.04,35) .. (463.25,35) .. controls (461.46,35) and (460,33.66) .. (460,32) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (471,46) .. controls (471,44.34) and (472.46,43) .. (474.25,43) .. controls (476.04,43) and (477.5,44.34) .. (477.5,46) .. controls (477.5,47.66) and (476.04,49) .. (474.25,49) .. controls (472.46,49) and (471,47.66) .. (471,46) -- cycle ; \draw(398,62.75) .. controls (398,38.31) and (418.04,18.5) .. (442.75,18.5) .. controls (467.46,18.5) and (487.5,38.31) .. (487.5,62.75) .. controls (487.5,87.19) and (467.46,107) .. (442.75,107) .. controls (418.04,107) and (398,87.19) .. (398,62.75) -- cycle ; \draw[dash pattern={on 4.5pt off 4.5pt}] (398.38,59.35) .. controls (412.22,49.09) and (425.7,46.94) .. (443.93,47.07) .. controls (462.15,47.2) and (481.57,55.26) .. (487.5,62.75) ; \draw(398.66,61.26) .. controls (401.29,64.61) and (413.34,68.33) .. (417.48,69.82) .. controls (421.62,71.31) and (440.6,74.79) .. (460.77,71.31) .. controls (480.94,67.83) and (482.97,66.11) .. (487.5,62.75) ; \draw(195,168.75) .. controls (195,144.31) and (215.04,124.5) .. (239.75,124.5) .. controls (264.46,124.5) and (284.5,144.31) .. (284.5,168.75) .. controls (284.5,193.19) and (264.46,213) .. (239.75,213) .. controls (215.04,213) and (195,193.19) .. (195,168.75) -- cycle ; \draw[dash pattern={on 4.5pt off 4.5pt}] (195.38,165.35) .. controls (209.22,155.09) and (222.7,152.94) .. (240.93,153.07) .. controls (259.15,153.2) and (278.57,161.26) .. (284.5,168.75) ; \draw(195.66,167.26) .. controls (198.29,170.61) and (210.34,174.33) .. (214.48,175.82) .. controls (218.62,177.31) and (237.6,180.79) .. (257.77,177.31) .. controls (277.94,173.83) and (279.97,172.11) .. (284.5,168.75) ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (205,150) .. controls (205,148.34) and (206.46,147) .. (208.25,147) .. controls (210.04,147) and (211.5,148.34) .. (211.5,150) .. controls (211.5,151.66) and (210.04,153) .. (208.25,153) .. controls (206.46,153) and (205,151.66) .. (205,150) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (217,139) .. controls (217,137.34) and (218.46,136) .. (220.25,136) .. controls (222.04,136) and (223.5,137.34) .. (223.5,139) .. controls (223.5,140.66) and (222.04,142) .. (220.25,142) .. controls (218.46,142) and (217,140.66) .. (217,139) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (347,139) .. controls (347,137.34) and (348.46,136) .. (350.25,136) .. controls (352.04,136) and (353.5,137.34) .. (353.5,139) .. controls (353.5,140.66) and (352.04,142) .. (350.25,142) .. controls (348.46,142) and (347,140.66) .. (347,139) -- cycle ; \draw[color={rgb, 255:red, 74; green, 144; blue, 226 } ,draw opacity=1 ][fill={rgb, 255:red, 74; green, 144; blue, 226 } ,fill opacity=1 ] (358,153) .. controls (358,151.34) and (359.46,150) .. (361.25,150) .. controls (363.04,150) and (364.5,151.34) .. (364.5,153) .. controls (364.5,154.66) and (363.04,156) .. (361.25,156) .. controls (359.46,156) and (358,154.66) .. (358,153) -- cycle ; \draw(285,169.75) .. controls (285,145.31) and (305.04,125.5) .. (329.75,125.5) .. controls (354.46,125.5) and (374.5,145.31) .. (374.5,169.75) .. controls (374.5,194.19) and (354.46,214) .. (329.75,214) .. controls (305.04,214) and (285,194.19) .. (285,169.75) -- cycle ; \draw[dash pattern={on 4.5pt off 4.5pt}] (285.38,166.35) .. controls (299.22,156.09) and (312.7,153.94) .. (330.93,154.07) .. controls (349.15,154.2) and (368.57,162.26) .. (374.5,169.75) ; \draw(285.66,168.26) .. controls (288.29,171.61) and (300.34,175.33) .. (304.48,176.82) .. controls (308.62,178.31) and (327.6,181.79) .. (347.77,178.31) .. controls (367.94,174.83) and (369.97,173.11) .. (374.5,169.75) ; \draw(25.92,25.49) node [anchor=north west][inner sep=0.75pt] [rotate=-359.46] {$x_{{ 1}}$}; \draw(40,5.4) node [anchor=north west][inner sep=0.75pt] {$x_{2}$}; \draw(224,10.4) node [anchor=north west][inner sep=0.75pt] {$x_{3}$}; \draw(238,34.4) node [anchor=north west][inner sep=0.75pt] {$x_{4}$}; \draw(278.92,28.49) node [anchor=north west][inner sep=0.75pt] [rotate=-359.46] {$x_{{ 1}}$}; \draw(300,7.4) node [anchor=north west][inner sep=0.75pt] {$x_{3}$}; \draw(478,12.4) node [anchor=north west][inner sep=0.75pt] {$x_{2}$}; \draw(491,36.4) node [anchor=north west][inner sep=0.75pt] {$x_{4}$}; \draw(167.92,134.49) node [anchor=north west][inner sep=0.75pt] [rotate=-359.46] {$x_{{ 1}}$}; \draw(185,116.4) node [anchor=north west][inner sep=0.75pt] {$x_{4}$}; \draw(365,119.4) node [anchor=north west][inner sep=0.75pt] {$x_{2}$}; \draw(377,143.4) node [anchor=north west][inner sep=0.75pt] {$x_{3}$}; \end{tikzpicture}

Because any two points in are equivalent in cohomology, one obtains a relation

Pulling this relation back under yields a corresponding relation among three cohomology classes on . Namely, for any decomposition and of the marked points and degree, let denote the subvariety whose general element is a curve with two components, one containing the marked points indexed by on which the degree of is , and the other containing the remaining marked points and degree. Then the pullback of 6 under shows that the sum

is equal to the corresponding sum where we instead insist that and , and also to the sum where we insist and . In particular, multipyling by any of these three cohomology classes before integrating should yield the same answer. Furthermore, can be interpreted as a fiber product of the two moduli spaces and , so one can deduce an equality between three sums, each of whose terms is a product of two Gromov–Witten invariants.

This yields a host of relations among genus-zero Gromov–Witten invariants, collectively known as the WDVV relations. When , an example of one of the resulting relations (after a bit of simplification) is the following, in which denotes the cohomology class of a point, the cohomology class of a line, and the fundamental class:

Interpreting the invariant as the number of lines through two points in , it should be intuitively believable that it equals . Similarly, interpreting the invariant as the number of intersection points of two lines in suggests (correctly) that this invariant equals , as well. Thus, the above relation implies

which recovers, via much more modern machinery, the ancient Greeks’ assertion that there is a unique conic passing through five general points in the (complex, projective) plane. In a celebrated theorem from the early days of Gromov–Witten theory Kon92, Kontsevich generalized the above computation to interpret the WDVV relations on as a recursion that effectively computes all of the numbers of rational degree- curves through general points in , requiring only the base case of .

Although Kontsevich’s proof was entirely mathematical, there is a different interpretation of his result that passes through the unexpected world of theoretical physics—more specifically, string theory. Curves arise in that setting as the “worldsheet” traced out by a string as it travels through spacetime, and Gromov–Witten invariants appear in the definition of a structure known as the “quantum product” on