# Computational Geometry — Riemann-Roch Theorem and Holomorphic 1-forms

In this article, I want to talk about one of the most influential theorem/formula in algebraic geometry and complex geometry — Riemann-Roch theorem. It tells you how to link local property (points that certain functions behave specially) and global properties (shape of the curves/surfaces). When you know Riemann-Roch theorem, your mental and spiritual status will be elevated, you become a better person and may never need yoga or meditation anymore!

## Intro

What we are interested in are so called compact Riemann surfaces — closed, orientable 2-dimensional surface. However, in terms of complex geometry, it is 1-dimensional, that’s why they can also be studied as algebraic curves — curves over complex numbers. You may be familiar with a bit of algebraic geometry without even knowing it! For example, let’s recall what is a unit circle, well, you may just draw it on a piece of paper and say it is right there. This is geometry. But algebraically, we say the following is the unit circle!

## Riemann-Roch Theorem

Let’s do similar things to compact Riemann surfaces! Geometrically, we draw them as objects with certain numbers of holes, and classify them according to number of holes but give this number a fancier name — genus. A genus zero Riemann surface will be a sphere, a genus one Riemann surface will be a donut, etc. Some examples of compact Riemann surfaces are

Algebraically, we would define the genus of a curve as the dimension of holomorphic 1-forms on it. Recall that (without going into too much detail of it), a holomoprhic 1-form can locally be written as

It seems wild to even link the two ideas, let along being able to see they are equivalent! In order to see it, we’d like to introduce the great and powerful (in Joe Rogan’s voice) Riemann-Roch theorem. But, as all maths literatures, we need (many) definitions. Let *X* be the algebraic curve we are interested in. We say a divisor *D* is a linear combination of points on a surface, i.e,

The degree of a divisor is simply defined as

and we say that two divisors are equivalent if they have the same degree. We call a divisor positive (non-negative)if all its coefficients are positive (non-negative).

For any function *f*, if on a point *p, f(p)=0* we call *p* a zero of *f*; and if *f(p)* is infinity then we call *p* a pole of *f*. There is a special kind of divisor called “canonical divisor”, which is defined as the linear combination of zeros and poles of meromorphic 1-forms of *X*. It is important to notice that any two canonical divisors are equivalent in the sense that they have the same degree, cause a meromorphic function on a Riemann surface will always have degree 0 (cause they have the same number of zeros and poles).

Now, drum rolls~~~, let state the Riemann-Roch theorem!

where

It does seems like an easy formula, huh! Why is it so famous and considered one of the greatest theorems of all time? Let me show you its power by giving some examples. First of all, some immediate consequences of Riemann-Roch theorem are

- Suppose
*D=0*, then Riemann-Roch implies

2. Suppose* D=k*, then Riemann-Roch implies

## Genus Zero Curve

Let us first see genus 0 case. An obvious candidate for meromorphic 1-form would be *dz*. By transforming *z* to *y=1/z*, it is not hard to see that *dz=-1/y²dy* has a double pole (pole of order=2) at infinity. Hence for *g=0* case, Riemann-Roch theorem has the form

Moreover, we notice that (I’m doing what mathematicians would do — leave the below as an exercise!)

hence we have the following simple! calculation

Now the show begins! Let’s take an arbitrary point p on X, since a single point, considered as a divisor, has degree 1, from the Table above we conclude *l(p)=2*. This means that we can find a non-constant meeromorphic function that has a single pole (hence a single zero) on *X*. and this function gives a surjective map

This map is also injective since for any complex number *c, f-c* has only one zero. Thus, via Riemann-Roch theorem, we identify our “genus 0” curve to Riemann sphere, which, is a **real** genus 0 space geometrically (Riemann sphere is also called one-dimensional complex projective space).

## Genus One Curve — Elliptic Curves

When genus is one, Riemann-Roch theorem becomes

In particular, (again, exercise to check!)

Notice that in particular, a point p has degree 1, and hence *l(p)=deg(p)=1*. This means that all meromorphic functions f such that *(f)+p* being non-negative are constant functions. This is quite different from *g=0* case, as we used exactly a non-constant meromorphic function to establish the bijective map from genus 0 curve to Riemann sphere. Now, given a point *p*, we have seen *l(p)* doesn’t give us much information, but what about *l(np)*? Let’s count it!

There are seven functions in six dimension space, so there must be a linear relationship between them. Let’s assume

By some elementary manipulation, such as add or multiply a constant to *x *or* y*, we can reduce the above equation to the form

or in projective space (add infinity point)

such that in non-singular (smooth)case it is called an elliptic curve. But why we call it a genus one curve? Cause when we write it as

we see the function is multi-valued for *y.* In order to make it a univalent function, we can no longer only consider in a single piece projective plane, but need to cut open two pieces of projective plane along *a, b* and *c, d*, then glue the two copies together. Imagine you slice two balls open and glue them together along the cuts, you get a torus, voila, genus one! To make it clearer, the gluing process can be depicted as below

How you slice and why you slice open a projective plane requires some complex geometry knowledge. Here is another way of doing it. Starting from our equation of elliptic curves, we see that

dx/y is a holomorphic 1-form since it will never be infinity. Choose an arbitrary point p0 on X and integrate along X. The integration will have ambiguity if two paths form a loop that goes around *(a, b), (c, d)* or around *(a, c), (a, d), (b, c), (b, d)*. Actually, this ambiguity is caused by the *handle* and *tunnel* loops of the torus.

If we modulo this ambiguity, i.e, modulo the lattice

then the integration is well defined on **C**/L hence gives a map from elliptic curve to complex torus. The above process can be visualized as below