 Thank you for the invitation to speak in the seminar, I have to apologize that it's late, but my internet was down till about 30 seconds ago. Today of all people had decided to do this. Anyway, I think yours was the first sort of large scale online seminar that started after the pandemic hit. I think the vantage seminar had been running for a while, but that's been running, that was running even before the pandemic. But I think you guys were sort of up and running for the longest time. So when I first accepted the invitation a while ago to speak, I had hoped to speak actually about some other work that's ongoing. And then as so much these days, that work didn't exactly progress at the speed that we had hoped for, for reasons that have nothing to do with mathematics. And we really haven't gotten far enough to give a meaningful talk about this so I decided instead to speak about something slightly older. And this is work that was published last year in a special volume of contemporary mathematics that celebrated the 75 year anniversary of the journal mathematics of computation. And this is joint work with my recently graduated PhD student Perlas Karane, and my colleague and her co supervisor Matthew Greenberg. So for this talk I'm going to assume that people have some familiarity with elliptic curves, but that you really haven't seen any drenthal modules before. So that you've maybe heard the term modular polynomial or isogenous graph in connection with them with elliptic curves but not not really anything with drenthal module so if you're very familiar with drenthal modules. I don't know, take a snooze for the first little while or something. So, just for motivation so drenthal modules were introduced in 1974 by Vladimir drenthal, who's a researcher at the University of Chicago, he didn't call them drenthal modules he called them elliptic modules. We know them as drenthal modules now, and he introduced them in the course of proving the landlamps conjectures for GL2 over global function fields. And the aim was to have some some function field analog of the theory of complex multiplication. And the rank two drenthal modules in particular bear close similarities with kind of sister objects in the world of number fields. The rank one drenthal modules are very similar to cyclotomic fields. And I'll say something about this in a couple of minutes and the rank two drenthal modules are sort of the function field analog of elliptic curves and are very very similar to elliptic curves. So, I have a slide that has a laundry list of similarities between different modules and elliptic curves. And then another slide that has the differences. And one of the things that makes this area interesting, especially from a computational point of view is that you turn along and you try and adapt things from the world of elliptic curves and it works all great and and everything works out nicely. Until it doesn't. And then you run into these kind of subtle differences. That make, in particular, a big difference in computations. So the similarities are. So this is like a slide of the laundry list of properties for elliptic curves. So drenthal modules are classified into ordinary and two percent. So they have attached to them Jane variants and the outlier Jane variant is J equals zero. So there's no 1728 here. They have a similar structure automorphism group, which is almost always similar except J equals zero has some extra in the morphisms. There's a notion of torsion points, except points are not really geometric points like there's no point addition but there's done a notion of poor torsion. And the torsion at a particular prime element P determines ordinary or super singular. They have isogenes and dual isogenes. There's a notion of a drenthal module of polynomial and the end string top module polynomial parameterizes pairs of an isogenous string top modules. And then if you restrict to N being a prime, in this case an irreducible polynomial, and you build the isogeny graph. So the vertices are Jane variants and the edges are ally isogenes. Then this has a very similar structure to elliptic curves. So in the ordinary case, the, sorry. It has a very similar structure and in particular the ordinary components are volcanoes and the endomorphism ring also looks similar. So in the finite field case, the endomorphism ring is an order in an imaginary quadratic field in the ordinary case and then maximal order in the quaternion algebra over function field in the super singular case. So this is all wonderful and immediately very analogous to elliptic curves but then there's different things. So, the first difference is there's no geometry like we have for points on elliptic curves you can't add points or things like that. We don't have any of this. There's no group structure. There's no value formulas as a result because the formula for isogenes is based on sort of, you know, the arithmetic of points. In general, in function fields, all valuations are non-archimedean so the absolute value behaves very differently. There's a notion of dwindle module of forms and they have expansions, which is the analog to Fourier expansions. But they're not like always the same for elliptic curves the J function is the J function each lattice has one J function. But for elliptic curves, it depends on the finite base field FQ and that turns out to make an enormous difference for computations and bounds and this kind of thing. So the J function looks simply as differently modular polynomials look and behave differently, most notably the growth rate of their coefficients is actually different. A side note that's not going to be relevant here dwindle module seem to be completely unsuitable for cryptography. Everything that's hard find it the curve seems to be easy for, for dwindle modules. And finally, what attracted us to this topic is that there's been very little sort of serious computational work and actual formal algorithm analysis and complexity theory analysis and so on. There were some I mean there's some algorithms implemented in magma. Let me mention a couple of just recent work including this one so a couple of years ago. Mostly who was a student at the University of Waterloo, and his supervisor Eric shows developed a couple of very fast algorithms for for computing the characteristic polynomial of Frobenius so the trace of Frobenius that's the dwindle analog of point counting. And then in this work what we developed is algorithms to compute the J function expansion to an arbitrary position to compute modular polynomials. And in general isogenes and dual isogenes so for isogenes we needed sort of an analog of the loose formulas. Now, what we opted to do for for for current as thesis word is to take a theory that's already in existence for dwindle modules and take algorithms that was based were based on that theory. And that was the classical analytic method for computing modular polynomials. And, but that meant that some of our algorithms do not correspond to state of the art algorithms for looked at curves. That's what we're working on now so with current PhD student Edgar Pacheco Castan we're working on taking some of the faster more state of the art algorithms, developing the corresponding machinery for dwindle modules, and then implementing them. So that's kind of an overview. So with that, let's start what's it going to do. Well, the first thing we need let me set the stage with some notation here. So throughout the talk q is going to be a prime power fq is a finite field of order q. Then we take an extension of fq. So let's call that L later on will will fix particular else but for now it's just any extension of fq. Now is the q power for Venus. So that just raises elements to the power q. And finally L of x is the polynomial ring overall. So just very basic notation. And then we need the notion of an additive polynomial and additive polynomial satisfies this equation here. So as a polynomial, not my substituting values but as a polynomial. So it's known that a polynomial is additive if and only if it has this kind of a form here. So all the monomials that appear have exponents that are powers of q. So that's precisely the additive polynomial. Okay. Now a slight change of topic. So let's look at an element in L. And let's look at the endomorphism that's given by multiplication by L. So we'll connect to additive polynomials in just a minute and let's do a little calculation. So we want to see how tau and alpha play together. So we take tau alpha and we let it loose on x and axis is now we're doing this for polynomial so access the the variable of the polynomial. Let's do a quick little calculation. And that's tau of alpha x. And what does tau do it raises to the power q. So that's just alpha to the q x to the q. And that's just the same as alpha to the q times tau of x. So tau alpha when you let it loose on x acts commutatively on non commutatively and it's the same as alpha to the q times tau. So this defines a multiplication between elements and alpha and the Frobenius tau and with that we can define this object here L of curly brackets tau. This is a ring this is the ring of twisted polynomials in tau with coefficients in L and it's a suffering of the endomorphism ring of L. And this is this is polynomials and how the addition is the standard addition, but the multiplication is this twisted multiplication here, where tau alpha is alpha to the q tau so this is a non commutative multiplication. So that's the ring of twisted polynomials. And what does this have to do with additive polynomials while there's a bijection between the set of additive polynomials over L and this ring and it goes like this where you have x to the q to the I here becomes tau to the I. Normally what does this map look like well if I have an additive polynomial f of x. That's the same as taking this polynomial g of tau here that looks like this and letting it loose on x, letting it act on x. So of course this is just a bijection it's not an isomorphism because one of these rings is commutative and the other one isn't. Okay. Right. So that we're almost ready to define a dream file module we need one more piece of notation. I'm going to use the notation a throughout for the polynomial ring over fq and K is the field of fractions and the ring of rational functions over fq in an indeterminate T. Not the same as x is before. So that notation in the function field world and the drill felt world and now we're going to look at a specific field L. I said we're going to use specific field else. And we're going to try to map this a into L and some sort of canonical way and those maps are called structure map and there's two cases. We have a finite field case where we basically let L be an extension of, of f of degree D. So we take an irreducible polynomial monic and irreducible p of t and then we form the quotient ring. And so this is just a degree D extension and the structure map is just a natural suggestion. So polynomial L gets mapped into this ff q to the d via taking a more p. And that goes to the case of elliptic curves over finite fields and the other cases the analytic case that corresponds to elliptic curves over the complex numbers and we form sort of this rather horrid looking field here, and this is the following so first you start with the rational function field, we take its completion at infinity. So that's preserve series in T to the minus one. So you take the complete field. But that's not automatically closed so you take the algebraic closure. That's the bar here. So now it's algebraically closed but it's no longer complete so you take the completion again, but fear not you don't have to keep playing this game because now you actually have a field that is both algebraically closed and complete with respect to the infinite infinite place. And so that is the function field analog of the complex numbers. So that's algebraically closed and complete with respect to the infinite place and the structure map embedding a into this is just included. So those are the two cases we're going to look at for our computations we're always looking at the first case, but for the analytic theory we need that second case so I'll say a little bit about the second case in a moment and then we'll look at that. Okay so what's it doing so here's a sample computation once you invent a into L of tau of this sort of funny twisted multiplication just if you've never seen this so you can wrap your head around it. So let's take. So this is now an element in L because polynomials are embedded into L so this is a polynomial in tau so this is in sorry this is an L of tau. And the coefficient is a polynomial in T so that's an object in a. Okay, how do you multiply this well we multiply everything by everything that's what we always do. But now in this red term here things are out of order because that the the coefficient should always be to the left of tau. So let's pull the tau squared apart. Now remember how does tau act on things. It raises things to the queues power. So tau acting on T squared is T squared to the queue. Okay. And now we need to let the second tau act. So we have the second act our act on T to the two q and again raises it to the power q and we get this result. So this is this is a simple computation in L of tau when a is embedded in this and this these are objects that we're going to be using this is that we're going to be using is polynomials and tau, whose coefficients are polynomials and T. Okay, the images of different modules are precisely objects like this. Okay, so now we're finally ready to define a different module. So a different module isn't a module at all. It's actually a map. It's an Fq algebra homomorphism. So specifically it's an Fq algebra homomorphism from the polynomial ring a into this ring of twisted polynomials L where L is now one of the choices we had from before it's either a finite field extension of Fq, or it's this funny complex number like field C. So it drops a polynomial a to an image which in the world of twin felt modules is usually noted fee sub a rather than fee of a with brackets it's usually fee sub a, and it only has to satisfy two pretty simple properties. It's a constant term so every image fee a is a polynomial in tau with coefficients in L. And the constant coefficient of this polynomial is a or rather the image of a under the structure map a in a embedding into L. So it's either a module of P, or it's just a itself via inclusion. And the second condition is a non degeneracy condition that tells us not all images of this twin felt module are constant polynomials. So at least one image is an honest to goodness actual polynomial in town. So that's what it went out module is now of course the first question is, if it's not a module why is it called a module. So why a module. The reason is that it oops I'm very sorry. And the reason is that it turns this field L into an a module in a new way. So if I take an element alpha in L and a polynomial a in a, then you can turn L into an a module just by ordinary multiplication I take alpha and I multiply by a. So the multiplication in L via the structure map that maps a into L and that's a module action. But a drink out module provides a different module action via namely a acting on L is just fee sub a the image of the drink out module of a acting on alpha so substituting alpha. The second coefficient of this thing here is a tau to the zero by property one and tau to the zero is the identity map. And so the identity map maps alpha to alpha so that means this thing starts out with a alpha plus some higher terms here, not of tau but rather of tau of alpha that's an that's an error. The accuracy condition shows that this is not always just equal to the first term. So this has some some other terms here as well. So it's a new way it's a different module action. So that's why they are called different modules but they're fq algebra homomorphisms. So it's basically just an fq algebra homomorphism mapping polynomials into this ring of twisted polynomials subject to these two conditions the second one is just non degeneracy in the first one is that just the constant coefficient is just a. Okay, so some properties the property is first proper is when the structure map is inclusion, then this is injective because the constant coefficient is the same as the argument. Right. So if, if, if, if, if two images are equal then the constant coefficients are equal which means that their inputs are equal. The second thing is because it's an fq algebra homomorphism all you need to write it down to define it fully it's it's it's image on T, and then via the fq algebra homomorphism property that determines what it is on the entire ring of polynomials. So if you just write it down what is the image of T while the constant coefficient is T. And then you get a bunch of other coefficients here in L, and it's, it somehow has a degree here so CR is non zero so it has a polynomial degree are as a polynomial. And this are is called the ranker fee it's not called the degree it's the ranker fee. And why is it the ranker fee. Well, there's a notion of a torsion as I mentioned before which has nothing to do with with a torsion group or it's just a kernel of a particular image so I take a polynomial a I form its image p sub a that's an endomorphism. And if I take that that endomorphisms kernel. So all the roots basically, right there's a polynomial just the roots of this polynomial, then that kernel is isomorphic to this free rank our module. And that's why it's called the ranker fee. And just to sort of make the connection to to to give you some idea of where landlines come in and where we're going to use this is that if you join this torsion to L you get a Galois action, and that that injects into GLR of this ring. Okay, so there you see the you get an inkling of where landlines comes in. Right and in particular the rank our case. This is actually an isomorphism and this group is just a month a star. And this corresponds to Z mod a that star. So this is just a multiplicative group in module a here. And so with that, let's look at the cases of small rank. So the first round is the rank wonder in thought module there's only up to isomorphism one rank wonder in thought module and it looks like this. And it was actually proposed to car by Carlett's in 1935 long, long, long before drenfield introduced drenfield modules. And it looks like this. And by what I just said on the previous slide if you if you join I've now switched my age to M to make it look a little bit more like what we're used to from cyclotomic field so if you take a polynomial M and you join the m torsion, you get this color extension the color group is that my m z star well it's a month a star. And so this is what I mean when I say these are the analogs of cyclotomic fields, they behave exactly like cyclotomic fields they have a galore group they have a similar galore group and many many other ways so that's all I'm going to say about rank to wonder in thought module modules and the rank to drenfield modules looks like it looks like this you know it's image on T is given like this. This is a notation that's usually used G and delta and that's not an accident. The delta is meant to look like the discriminant delta of an elliptic curve, and the G notation is used of well for elliptic curves over C. Oftentimes the coefficients are called G two and G three. And so this is the same G sort of. Okay, and you see here, in fact, they have something attached to them that's a J invariant. If it was two plus one were three, then it would look like the J invariant of an elliptic curve. But this is the J invariant of the drenfield module it's an element in L and you see here already you get already an inkling of how things are different. The J invariant depends on the base field of the drenfield module so it depends on FQ. And with that, we actually have ordinary and super singular drenfield modules, and this is only in the finite field case so our L is now FP which is a finite field. And these things are ordinary sure enough if this P torsion P was the polynomial that defined this extension is the P torsion is this that it's ordinary and if the P torsion is trivial and it's super singular. So this is exactly the characterization from elliptic curves and right to turn out to be the function field equivalent of elliptic curves, even though they look very, very different they're completely different objects. There's FQ algebra homomorphisms. They share many, many similarities with elliptic curves. Okay, so we can define maps of twin felt modules. So, this is a bizarre notation because P and C are mapped but we still use this notation you from P and C it's a morphism it's just a polynomial with coefficients and L bar that satisfies this condition here so you take any polynomial a you form its images of the two modules. So this is a morphism. So this is just an identity of endomorphisms on L on L bar actually. It's an endomorphism if the two twin felt modules are equal. It's an isomorphism if it's invertible in which case, it's just a constant in L star in L bar star. The isogyny is called an isogyny if it's nonzero and it's not hard to see that isogen is preserved rank. Every isogyny has a dual isogyny and in this case the dual isogyny satisfies these two equations so u times its dual is like phi is phi n and here's cn so this is the image of phi and of c and a sum fixed polynomial n, and this polynomial is the isogyny. So here degrees of isogenes are polynomials they're no longer integers and we call this an n isogyny and then finally we say that u is defined over L if its coefficients are in L so we're only going to look at isogenes defined over L. So this is exactly the same lingo for maps between twin felt modules as we have between elliptic curves. So let me give you some examples so you actually see what these things look like. So this is two equals three. This polynomial defines our finite field extension L of fq. And here's an example of a T isogyny. So this is this is a polynomial tau u is tau plus this polynomial and T, and this is a T isogyny it has degree T, and it maps this to this twin felt module. So remember how do you read this, this twin felt module means that if you take the image of T, then this is T cubed tau squared plus T squared tau plus T, that's the corresponding rank to the twin felt module. And then the dual is this linear isogyny. So some polynomial times tau plus another polynomial. Here's another example this is a T plus one isogyny with this dual. Here we have a T plus two isogyny tau plus this polynomial maps these two twin felt modules and the dual is this and these polynomials are in fact examples of a much more general characterization that we managed to do. My thing is really sensitive. And that's a characterization of linear isogenes of linear degrees. So these are isogenes that look like this tau minus alpha for some alpha and the degree n is linear and monic. And then we start with the twin felt module and we have formulas for the image twin felt module. All these parameters satisfy this identity and we are formulas for the dual isogeny and the dual isogeny is also linear. We tried to characterize isogenes of higher degree in this way. And yeah, not going to happen. I mean the symbolic computations are just incredible. Here you can prove this by a symbolic computation on polynomials and it's relatively straightforward. But as soon as you get to higher degrees, it's really horrific. Okay, so I have one slide on the analytic theory of rank to drain from modules and that's because it's almost. I don't say almost identical but very, very similar to the whole analytical world of elliptic curves. So different models of rank are over this funny field C infinity that corresponds to the complex numbers. There's one to one correspondence with rank our lattices over the polynomial ring. This correspondence extends to a group isomorphism and in fact an FQ vector space isomorphism of morphisms between rank I drinks up modules and morphisms between a lattices. And then the coefficients, if you look at the transfer module in this analytic world, it's coefficients are modular forms drinks up modular forms in some suitable uniformizer, and they're given in terms of Eisenstein series. And they have these expansions. They have the analog of deuring lifting so you can move back and forth if you're given a drink up modules and an endomorphism, you can move back and forth by me for a moment to close my door by me. You can move back and forth between drink up modules pairs of tens of modules and the morphisms defined over FP the finite field world, and this field C infinity which is the analytic world. And then you go down by an analog of during lifting during slifting theory and you go down by a reduction. And so with that, let's delve into this. Let's take your rank to drill felt module and land that Lambda, capital Lambda is the lattice associated with it, and then those two coefficients G can be expressed in terms of these Eisenstein series. q minus one and e sub q squared minus one are Eisenstein series of weight q minus one and q squared minus one. This is the Eisenstein series of weight k for this lattice. And what is this bracket i and bracket two here? This is just a shorthand notation for this polynomial t to the q to the i minus t. So this should look sort of like stuff that you're used to from the elliptic curve analytic world. You can actually compute these things. And here's where it finally becomes actually very interesting. These are the first two terms of the expansions of these coefficients. They're weighted coefficients by this parameter pi bar to the q minus one here arises from the Eisenstein series of the polynomial ring of the trivial lattice. And it's a normalizing factor. And it's kind of the analog of two pi i from the complex numbers. And these are the extra expansions. This bracket one here is again this polynomial t to the q minus t. s is a uniformizer here, the corresponding uniformizer. What is s here? Well s is something is a power of t t to the q minus one. And what is t? t comes from the exponential function. So this is the exponential function associated to this lambda. And then t inverse is the exponential function corresponding to this lattice pi bar times a where pi bar is this normalizing factor. This is the lattice corresponding to the to the Carlett's module. And it's normalized like this. And so this s is what corresponds to e to the two pi i z in the analytic world. Now e to the two pi i z is usually called q. And these these modular forms are usually written in terms of a uniformizer q. But my q is already reserved for a finite field. So I couldn't call them q. So we call them s. The literature usually calls them s. And you look at this and they look completely and utterly different from what you see for elliptic curves. For elliptic curves, all the even powers appear, right? For elliptic curves you would have like s squared or one and s squared and s to the fourth and s to the sixth and s to the eighth and so on and so forth. But here you have these very wild powers that are polynomials in q. They depend heavily on the base field. And these are sparse series, right? So you see that only a few powers of s appear. And the bigger your base field the sparser they get. This little epsilon by the way is just an anomaly that happens when you're over f2. It's not important what this is. But so here you already see that things are very, very different from the elliptic curve world. These modular forms and modular functions look very, very different from what you see for elliptic curves. Okay, now let's move on to the j function. So you can divide these by raise to the power of q plus one and divide it and then you get this j function. And what do, so here's some examples of j functions for some small q, two, three, five and seven. And again, there's some very interesting stuff going on. So for for elliptic curves your j function well starts with q to the minus one and then you have coefficient 144 and so on and the coefficients grow very rapidly and the whole thing is very, very dense. But look at what happens here, for example, for q equals seven. There's this big gap between s to the zero and s to the five. So somehow this sparseness of g and delta is reflected here. There's there's a whole bunch of things that vanish. Here's another gap from s to the seven to s to the 11. So there's a whole bunch of coefficients that vanish. And not only that the coefficients of j themselves are sparse polynomial. So here, for example, is a polynomial of degree 49, but it only has three terms. Okay, so these things are completely different from from what you see in in in elliptic curve world, the degrees here grow very rapidly, but the polynomials are totally sparse. Okay, so I should mention that we have an algorithm that computes the j function to arbitrary precision. This is the time and space requirement. So if n is if the precision is large and q is small, this is small, this is basically n to the 2.5 and space q n squared. Oh, tilde means here I suppress log factors. And we have this implemented in sage. And because we're working in the non-archimedean world, it's really nice, you can exactly predict the precision and compute this thing up to this precision. And we use this algorithm to compute modular polynomials. So for this, let's move on to the nth modular polynomial. The nth Drainford modular polynomial is defined completely analogous to how it's defined for elliptic curves. So it's a polynomial in x, and it depends on a J invariant. And it's the minimal polynomial of J of NZ over this function field here, C infinity adjoint J of that. So this is exactly the same definition. And it satisfies some very similar properties. So the coefficients are power series in s, because J of z and J of NZ have preserved series expansions in s. So they're power series in s. If you plug in another J invariant for x here, you get zero if and only if the corresponding J invariants or Drainford modules are n isogenous. And then it's a point, if you look at it as a polynomial in two variables, then it has coefficients in a. So the coefficients are polynomials in t. It's symmetric in x and y. These are the leading terms. And here this power n of n is this. And what does it mean if I write down the absolute value of a polynomial? Remember our n's and p's and everything are now polynomials? Well, this is just q to the degree. And then in particular, for the prime case, in this case, where n is an irreducible polynomial, it has degree l plus 1. So q to the degree l plus 1. Okay. So here's a small parameterization example again. So you see what this looks like. So q is 3. p of t is this. And this is one of the Drainford modules we had earlier. One of the isogenes we had earlier. This was our t isogeny from this Drainford module to this Drainford module. And so let's look at the modular polynomial. So let's look first at the J invariants of these two Drainford modules. This has J invariant t plus 2. This has a slightly bigger J invariant. And so let's form the modular polynomial with respect to this J invariant here. And it looks like this. It's a degree 4 polynomial. Remember, here our l is linear. It's t. So its absolute value is q, which is 3. And the degree is 3 plus 1. So it's degree 4. So this is a degree 4 polynomial. And the coefficients are polynomials in t. So this is now phi over the finite field world, not the analytic world. And we compute the roots of this polynomial. It has these four roots here. And sure enough, one of the roots is this J invariant of c. Okay. So in other words, if I plug in the J invariant J of p and J of p, you get 0. And this is independent confirmation that these two Drainford modules are indeed t-isogenous, as we said earlier. Okay. Now, how do you compute this? Well, our algorithm, we opted to use the standard classical complex analytic method to compute these modular polynomials because we had all that machinery in place in the literature already. And we wanted to focus on implementation. So we're looking now at the case where n is an irreducible polynomial. And we compute the modular polynomial via its definition symbolically. So you take J of z, a particular J of z, up to a certain precision in the analytic world and J of lz up to a certain precision. And then you form this equation where you write down fiel symbolically. So the coefficients of fiel are the unknowns, and the coefficients of J of z and J of lz are computed. And if you compute these two sufficient precision, then you can recover the coefficients of fiel. So this is precisely how this works. So we worked out the exact precision. Again, when you work in the non-archimedian world, it's really nice. You can work out exact precision. We need to work out the J invariant up to this precision, so q to the 2 degree l plus q to the degree l minus 1. And J of lz, we need to work out to this precision here. And this is a polynomial. So it's going to have powers of J of lz in it and powers of J of z in it. And we need to work out these powers as well to this, to the same precision. And then you plug it all in, and the coefficients of fiel are the unknowns, and it becomes this giant linear algebra problem. So you can write it in the form matrix times vector equals right-hand side vector where the right-hand side vector is known. The left-hand side vector, the left-the matrix, coincides with the coefficients of J of lz and J of z in its powers. And the vector, the unknown vector, is the coefficients of fiel, and you solve that. And that way, you can compute modular polynomials. And our lofty goal, which we're nowhere near, is to start generating a database of modular polynomials similar to what true Sutherland has for modular polynomials of elliptic curves. And we're maybe epsilon there. And the problem is that just like in the elliptic curve world, modular polynomials are big. They are very big. So here's a very, very small example. So this is, again, over f3. Sort of, it doesn't get much tinier than f3. And this is for the irreducible polynomial t squared plus 1. This has absolute value, t squared plus 1 has absolute value 3 squared, which is 9. And so the degree of the modular polynomial is 10. And here it is. So here are all the coefficients. It starts with x to the 10, y to the 10, and then x to the 9, y to the 9, and so on, all the way down here to the constant coefficients. And these are all the coefficients. And you see that it takes, if you write this out in a regular PDF file, well, this is four pages for this tiny little example. So this is the problem with modular polynomials, that they are big. And so they are not easy to compute. Okay. So let me compare our algorithm to the classical algorithm, complex analytic algorithm for computing modular polynomials. So I'm using, again, O tilde. So I'm suppressing a log factor. And here's the time and space complexity. So the classical analytic method takes out to the 4.5 time. This was originally, Alkes wrote out to the 4, but then there was a bit of discrepancy in terms of size of the coefficients and taking growth rate and to account. And so Charles Lauder later on corrected this to Alta to the 4.5 and space Al cubed. And this is our complexity here. Alta to the 8, Alta to the 6. So when we first got this, we were mortified. I mean, this is terrible. This is just an absolutely terrible result. This is so much worse than what happened with elliptic curves. So I mean, this is multiple orders of magnitude worse. So we were very disappointed. And then we started looking at things a little bit more carefully. And we realized, well, this is more or less as it should be. And the reasons for the discrepancy, and this is why I'm saying that when you start doing computations of these things in the world of Drenfeld modules, you run into these differences where this whole analogy between elliptic curve and Drenfeld modules is simply not true anymore. So the difference is in the growth rate of the coefficients of both the powers of the J function and the modular polynomial itself. So there's a bound on the case coefficient of the I power of the J function in the elliptic curve world. This is essentially square root of K I essentially square root of I is the I is the is the coefficients of J to the I. In the Drenfeld module world, this was bounded by essentially I. So instead of square root of I, it's bounded by I. Now, if you stare at the expansion of the J function, you go like, now, this is like way too bad and bad and bound. It's not QI. It shouldn't be QI, right? It should be something much less. But when you start computing, and this is still true if you compute J to the Q plus one, but when you start dividing by delta, if you start using better bounds, your bounds with this division starts blowing up. And I worked on this quite a while and I tried to improve this bound and was unable to do it. I still think it's a terrible bound, but this is the bound that you can get. Now, even more interesting is that the coefficients of the modular polynomial itself behave differently. There's a well known result by Paula Cohen who proved that the largest coefficient of the classical modular polynomial, alpha modular polynomial is basically bounded by six L log L or grows as six L log L. It's asymptotic to six L log L. But for Drenfeld modules, the growth rate is between essentially L and L cubed. And L is actually false. If you do computations, for example, even just for linear polynomials L, it suggested a growth rate of L squared. So they don't grow like L. They grow like L squared. They simply grow faster than you have in the elliptic curve world. And so there is no way you can ever get this complexity, right? It's just not true. The complexity is just not true. The asymptotic complexity is just not true. And you expect to get a significantly worse result. But maybe you shouldn't get as bad as L to the eighth and L to the sixth. Maybe we should have gotten L to the seventh. I'm not sure. But certainly you get something that is significantly worse by multiple orders of magnitude worse. Also, this complexity does not take into account any of the sparseness. So we are treating these as if everything was like completely dense, which is actually not true. So I think especially the space complexity is actually a vast overestimate. And then we try to work something with how do you estimate, you know, sparse polynomials and stuff, and it becomes a hugely messy analysis, and we were unable to do this. So this is really not so easy. So this is what we have. Okay. So that's the algorithm. Right. So a few words about what we're doing currently. The state-of-the-art algorithm for finding classical modular polynomial is not this one. It's an algorithm due to Broker-Lauder-Sutherland from 2011. And it uses some very different ingredients. And these individual ingredients have to be partially developed for the world of dense-art modules. The first thing is the Hilbert-Class polynomial. The Hilbert-Class polynomial is the polynomial, all of whose roots are the J invariants that have complex multiplication by some fixed order, by the same order O. And it has integer coefficients. And the algorithm to compute, there's an algorithm for computing the Hilbert-Class polynomial due to Sutherland also from 2011. And it's essentially the complexity, time and space complexity, is the square root of the discriminant or the absolute value of the discriminant. And that's the size of the coefficients. So you really can't do any better. And so this has to be developed for Drinfeldt modules. And there is some analytic theory there for the J function, but you don't find the term Hilbert-Class polynomial anywhere in the literature. So we're working on that. So the second ingredient is the so-called isogenic graph. The isogenic graph has as vertices the J invariants and as edges the L isogenes. It's an almost L plus one regular graph, except for some degree one vertices. And the ordinary components are volcanoes. And I'll show you in just a moment, you have probably seen pictures of volcanoes. They have these beautiful, regular looking graphs. And this all holds, sorry, this all holds in the world of Finfeldt modules as well. And in fact, we have an algorithm to generate L isogenic volcanoes. So Sage lets you generate L isogenic volcanoes for elliptic curves and draws them nicely. We have an algorithm for Drinfeldt modules, but we don't have a drawing program associated. Okay, so we have an algorithm. But again, it's not state of the art. And then it uses the Chinese remainder theorem. It basically computes this modular polynomial modular bunch of suitable primes. And suitable here has a very good meaning about splitting and so on. I don't want to get into that. And then the Chinese remain this. And there's time and space complexity for that algorithm is L cubed. So the Broker-Sutherland algorithm has complexity L cubed. The classical analytic method has L to the 4.5. And with joint with my PhD student, Edgar Pacheco-Castan, we're currently adopting that method to Drinfeldt modules. And we will almost certainly not get L cubed. Well, we might, but I don't know, maybe we will. Okay. Here are some pictures of volcanoes. So here is, so we're looking at the L isogenic graph. The vertices are Jane variants. The edges are L isogenes. In this case, this is over Q equals three and L is equal to T. And this is one component. This is a highly disconnected graph. But this is one component. And this is a component that contains this Jane variant. And you see what they look like. So this is a volcano. In this case, the crater is just, is degenerate. That's one vertex. But then there's all these very nice, regular looking trees hanging off of here. They're all complete. All the leaf vertices are in the same level and so on. So you've probably seen pictures like this for elliptic curves. It's the same for gentle modules. Okay. So here's another example. This volcano actually has an actual crater. It has six vertices, but it's a very short, not very high volcano. So it's only high one and it has hanging off of these stubby little trees. Here we have, this is for a T squared plus T plus two isogenes. So for Q equals three, this has degree nine, degree nine plus one is 10. So the valency here is 10. So each of these neighbors here has two neighbors in the, each of these vertices has two neighbors in the crater and then eight hanging down. Here's another example. That's an aerial view. So here this is again a T isogenes. So the valency is four. The crater has three vertices here. And then it has, each vertex has these two isomorphic trees hanging down. So we can compute these things. Okay. And for anamorphisms, you only traverse a tiny little piece of this crater, actually only two levels. So we have the machinery to do this and we have the machinery to traverse these, these levels too. Okay. So some other methods that we're looking at for sort of future work, there's another module of polynomial algorithm due to anger, but its space requirements are rather prohibitive and they might even be worse for turns out modules. Maybe not because our things are sparse, but I don't know it's worth looking at because it uses a lot of symbolic computation and symbolic computation works particularly well for turns out modules. There is an algorithm in the state of the arts for computing and the morphism rings of ordinary elliptic curses due to be saw in Southern and again from 2011. These boys were busy in 2011. And here what it does. So you look for the correct order in the isogeny volcano. So you look, so all the vertices at the same level have complex multiplication by the same order. And so you're looking for that level. And the standard method, cold method traversed basically found path sort of in this isogeny volcano and look for it there. This algorithm determines much of that via smoothness testing of relations and class groups. And as a result, it's supexponential. It has the same complexity as class group computation, whereas cold algorithm and our algorithm are exponential. This almost certainly works, except it's not always going to be supexponential because class group computations are only exponential if the genus is large compared to the finite field. So if we're working with orders over a small field fq and the conductors have large degrees, then we might get supexponential complexity. Otherwise, it's going to be exponential for sure. And then of course, there's the whole world of super singular genus modules that we have not yet looked at, computing the isogeny graphs, computing the morphism rings, and etc, etc. So just a reminder what happens in the world of elliptic curves, the isogeny graph over fp squared, all the super singular curves are defined over fp squared. It's actually a Ramanujan graph. It's not a volcano. It's this sort of expanded graph. When you restrict to super singular elliptic curves defined over fp, you get a subgraph that's a collection of stubby little volcanoes, volcanoes of height zero or one. And the structure of these things was described very nicely in this multiple author paper in 2019, where they describe the structure exactly and how these things are situated in the isogeny graph and so on. So very nice. We expect very, very similar behavior for two dwindle modules, but we haven't even touched the super singular case yet. And I think that's all I want to say. I'm going to leave you with a nice, sorry, I didn't mean to go to that. I'm going to leave you with a nice picture of this is because we can't draw our things so nicely. This is an isogeny graph for elliptic curves. This is the two isogeny graph over f10 to 1049. This was generated and drawn with sage by caranoid. This is not the whole thing. There's a whole bunch of isolated vertices missing. So we only drew the things that aren't isolated vertices. So here, for example, you get a nice little component and then here's a nice little volcano. So here's a beautiful volcano. Most of them are not very interesting, but you get some volcanoes. So I think that's all I want to say. So that's the progress we've made so far on dwindle modules. And I'm happy to take questions.