 So for each, so for all alpha in P1L, right, so remember this is L union infinity, the number of points in CL such that xp is alpha is the same as the number of solutions, or the number of square roots of f alpha in L, okay? And remembering what f infinity means, it means that leading coefficient. Sorry? Sorry, when I solve what is y? So that point does not really have a y coordinate, right? So what's going on is these two equations are two different affine pieces of the curve. And we're gluing together, so that the curve is obtained by gluing together those affine pieces using these relations, right? Now what's going on is that for when x is a finite value in L, then you get a value of y. When x is infinity, then you have to switch to this other model and you get a u and a v coordinate, but you don't necessarily get a y coordinate, right? I know some of you have already seen this, and I apologise for going into so much detail. The reason I'm doing it is when I first started studying point counting, Kedlaya's algorithm, this sort of thing, it was all about hyperliptic curves, and I had no idea about this description for a very long time. And once you know this description, everything is so much easier. But if you don't know it, it's impossible to understand what's going on. So I'm just feeling sorry for my younger self, trying to make amends. Okay, great. So let's go on. Okay, so this is now section 3.2. So now I'm going to assume that K is a finite field. K is now going to be fq, okay? And we're going to look at, talk about how many points there are on the curve. So the first thing very obvious is that the number of points is finite. Okay, there are at most q plus 1 possible values of x. And for each of them, there's at most two points on the curve. See, I almost said two values of y. It's not quite right. Two values of y or v. Okay, so the goal of the course is given f, so this is the polynomial describing the curve. Compute. Compute this number. And maybe even over extensions, fq to the r. Okay, for r being 1, 2, so on. I want to compute these numbers quickly, right? Okay, what does quickly mean? Well, we'll see. Quickly as we can manage. Now, of course, there's a very simple algorithm, right? This is a finite problem. There's a very simple algorithm which I call the enumeration method. And the enumeration method is you just try every possible x value, right? Try all alpha. Okay? Or in q to the r. We can do q to the r. Now this method, it's okay when the parameters are small, but it's pretty bad when the parameters are large, right? Because you need to test something like q to the r things, right? For each one, you plug in alpha into f. So you compute f of alpha and then you test if it's a square. And there's various ways to test if something is a square in a finite field. I won't go into that. But you need to do this q to the r time. So the complexity is exponential in r. That's the main point I want to make here. Exponential in r, okay? Which is very bad. And we're going to be looking at algorithms whose complexity is only polynomial in r. Okay? Clockwise, right? Same direction as in Australia, I think. Okay, so one other fact I want to mention is about the number of points. So I mentioned before we have this sort of naive bound, the number of points. Which is at most 2 times q to the r plus 1. Because there's q to the r plus 1 possible values of our alpha. And at most 2 points for each one. But there's a much better bound. This is called the Haase-Vey bound. Which says that the number of points is approximately q to the r plus 1. Approximately q to the r plus 1. So this is kind of at the main term. And the error is at most 2g times q to the r over 2. So this is the error term. So probably I guess Drew might have talked about this for elliptic curves. When g is 1. But you can see for any fixed g, this right hand side is going to grow much more slowly than this main term. So it's a very narrow window for the number of possible points. So I'm not going to prove this in this course. It would take a little while to do it. I think I've given some references in the notes for some nice textbooks that discuss how to prove this. Okay? And I should mention also, of course, this is not just for hyper elliptic curves, right? This also works for any smooth curve over a finite field of genus g. Exactly the same result holds. Okay, so now I'm going to talk about zeta functions. Or as they are known here, zeta functions. The hardest word, by the way, was math and maths. I lived here for a long time and I had sort of made the transition to math. And then I went home and it was just awful. Worse than jet lag. Okay? Okay, so again we're going to have a curve over fq. Hyper elliptic curve. And I'm going to write, just to abbreviate this, I'm going to write n sub r for the number of points over fq of the r. So here is the zeta function. So z, or z, z, c, t, it's going to be a formal power series, x of n1, t, n2 over 2, t squared, n3 over 3, t cubed, dot, dot, dot. Okay, so you basically have this sequence of numbers, n1, n2, n3, and so on. And you can sort of imagine they should be growing. And you plug them into this formula and form this power series. And then you take the formal series exponential. And you can do that because there's no constant term. So it makes sense as a formal expansion. And our priority, you'll get a power series with rational coefficients. They actually turn out to be integral. We'll see that in a moment. But from the definition, you can see their rational numbers. And I guess the coefficients of the zeta function are going to depend in some complicated way on this n1, n2, n3, and so on. You could even write down formulas for each coefficient of the zeta function in terms of these guys. I think there's a problem in the notes that asks you to do that for the first few coefficients. Okay, so that's the zeta function. And the zeta function satisfies this marvelous thing called the vacanjectures. So let me write down what they are. It's very confusing they're called the vacanjectures, seeing as their theorems and have been for a long time. But that is the traditional name. So the first thing is that the zeta function is a rational function. In other words, it's a ratio of polynomials. And that's, I think, a really amazing fact. Because what it says, it says that that entire infinite sequence, n1, n2, n3, and so on, is determined by a finite amount of data. If you know the numerator and denominator of the zeta function, then you can sort of calculate these nr's as far as you want. So there's a strong pattern to them. Okay, so we can say a little bit more. It has the following form. Okay, it looks like this. It looks like this polynomial on top, which I call the L polynomial. I'm sure Drew talked about this a lot. Divided by 1 minus t, 1 minus qt. And I'm going to write the old polynomial like this. It's going to be 1 plus a1t plus a2t squared all the way up to, it turns out it's a polynomial of degree 2g. And these coefficients are integers. Okay. And we also know a lot about this L polynomial. So what do we know? We have the functional equation. So you can write the functional equation in terms of the zeta function. If you like, I'm going to write it in terms of the L polynomial. So it says the following. I hope I've got the normalizations right. 1 over qt. So if I plug in 1 over qt into the L polynomial, I should get qt squared to the minus g times the original polynomial. And you can check, and I think there's a problem for this. This is equivalent to saying, so equivalently it's saying there's a symmetry in the coefficients of the L polynomial. So a2g minus i is equal to q to the g minus i ai. This is for all i. These are i's. I suppose I need an a0, right? This is a0. Okay, so they come in pairs, right? a0 is related to a2g, a1 is related to a2g minus 1. So it means that if you know half the L polynomial, you can immediately deduce the other half. You don't need to do any more work. Okay, so that's the functional equation. And then the other thing we know is there is a Riemann hypothesis. Okay, and the Riemann hypothesis here says that the roots of LLC have complex absolute value, q to the minus a half, okay? And I think this is equivalent, or more or less equivalent to this Hassouvet thing. I can't remember exactly what you have to assume on each side to make them equivalent, but I think they are pretty much the same idea. That half minus a half is the same as this half here. And I think there's a problem about that in the notes. Okay, I'm not going to prove all this obviously. You can look up a proof in the same references I mentioned before, which are listed in the notes. And also these hold for any curve, not just hyperliptic curves, any curve of genus G. And you know they're related to, the reason it's called the Riemann hypothesis is there are sort of formal similarities between this and the Riemann zeta function. I think you can even make them more than just formal. I think Sarah has a notion of a zeta function of an arithmetic scheme. I think if you use that definition then this is literally the same thing as the Riemann zeta function or dedicated zeta functions for number fields and so on. Okay, so those are vague conjectures. So when you sort of look at all this you can see that really the L polynomial is sort of sitting at the center of all this. Because if I know the L polynomial then I know all the point counts over all extension fields. Okay, so another goal of this course or maybe a more general goal of this course from what I said before, before I said we just want to count points. Now I want to generalize this and say given F we want to compute this L polynomial. Okay, this is some polynomial with integer coefficients of degree 2g. That's what we want to do and we want to do that as fast as we can because for some reason we're in a bit of a rush. I don't know why, but that's just what we do. Okay, so I mentioned this before that you only really need half of the coefficients of L. So by the functional equation it's enough to compute n1 up to ng. Okay, if we know n1 up to ng then what does that give us? Well, using this formula here we can calculate the terms up to t to the g of the zeta function and then we can easily calculate the terms up to t to the g of the L polynomial and then we can use the functional equation to get the rest of the L polynomial. Okay, so we really only need n1 up to ng and we could use the enumeration algorithm for that. That would work. If I use the enumeration algorithm I need to try first of all all values of x in Fq and then in Fq squared I want all the way up to Fq to the g. Okay, so then my complexity is at least q to the g. Okay, because it's going to be dominated by the last one the counting points over Fq to the g. So that's pretty bad. Again, this is exponential in g and we're going to want something that's polynomial in g. That's where we're going in this course. Okay, and I should mention a famous unsolved problem and this one really needs some 5 or 6 lightning bolts I think. Can you compute this L polynomial in polynomial time and what I mean by polynomial time I mean polynomial in the input size. The input size is roughly g times log q and the reason is that if you write down the input polynomial f f has something like O of g coefficients and each coefficient is an element of Fq and you can write that down using something like log q bits. So we don't know an algorithm for computing even for hyperliptic curves, let alone general curves we don't know an algorithm for computing this L polynomial in a running time that's polynomial in this expression. We do know some other stuff. For example, if you fix the genus then we have an algorithm which runs in time log q to some constant depending on g. I don't know what the record is for g at the moment. I think in general it might grow exponentially in g. I think for hyperliptic curves it might be linear these days. I feel like there was a recent paper on this, I can't quite remember. But it's pretty bad, it grows with g. So this is Schof's algorithm and Schof might be in the room. Hey, how are you going? Schof's algorithm and descendants thereof, right? You only do elliptic curves, right? Okay, yeah, you know, genus one. Boring, boring, okay. So that's for fixed genus. So then we can do stuff polynomial log q. On the other hand, if you fix the characteristic, if you fix p, then we know algorithms whose complexity is polynomial in the genus and also polynomial in the extension of this field of the field of q is p to the a, then it's also polynomial in a. But we don't know how to do it in both. Okay, that's just life, it's a very annoying situation. Okay, how am I going for time here? When does this normally finish? Have I got five minutes, ten minutes, zero minutes? Yeah, at least ten minutes, yeah, about ten minutes. Ten minutes, okay, cool. I think then I will continue on to section four. By the way, I think there are quantum algorithms for doing that last problem in polynomial time. I think Kieran Kedleyer had a paper about that a few years ago. So in this, I'm assuming we don't have a quantum computer. I wish we did, but we don't. Well, I don't know.