As much as I just want to jump into implementing the Abel map the more I think about it the more I beleive I need to establish a solid data model before doing so. In another post I’ll describe my thoughts on this matter by discussing divisor and place constructs. For now, I wanted to share some thoughts about computing paths to so-called “singular (discriminant) places” on a Riemann surface.
The two major (abstract) classes at play are
RiemannSurfacePathPrimitive
AnalyticContinuator
The RiemannSurfacePath
class follows a
composite design pattern
with RiemannSurfacePathPrimitive
as its primitive / base class. A
RiemannSurfacePathPrimitve
encapsulates the geometry of a Riemann
surface path. In particular, the Line
and Arc
classes define how to
traverse a path on the surface where the -part of the path is a line
segment or arc, respectively, in the complex plane. (Thoughout
abelfunctions we interpret a Riemann surface as the desingularization
and compactification of a complex algebraic curve given in some affine
coordinate frame.) All paths are made up from these two geometric items.
Each RiemannSurfacePathPrimitive
contains an AnalyticContinuator
class instance which performs the actual analytic continuation along the
path; that is, the analytic continuation of some fibre of -roots,
where is the -degree of the curve from some in the complex plane to some other
. Without the AnalyticContinuator
a RiemannSurfacePath
wouldn’t know what the -part of the path looks like.
The class diagram for these objects looks like this
Again, every RiemannSurfacePath
defers analytic contination of
-fibres along -paths to a contianed AnalyticContinuator
object. Currently, there is only one kind of analytic continuator
implemented which uses Smale’s alpha theory; a verifiable method of
using Newton iteration for numerical root finding. This method is used
whenever the -part of a Riemann surface path is sufficiently far away
from any discriminant points of a curve; that is, points where two of
more -roots coalesce into one with multiplicity.
If, on the other hand, the -part is near or at a discriminant point then we need to use a Puiseux series expansion of the curve in order to accurately capture the local geometry and therefore, “analytically continue” our -fibres. The (crudely drawn) image below describes what is going on.
Suppose at the discriminant / branch point there are two places lying above it, and . That is there are two places on the Riemann surface whose -projection to the underlying curve is equal to . In this particular example it just so-happens that the -projections are equal, as well; an additional challenge that may be present. At any regular point of the curve there are always places lying above it whose -projections are distinct by regularity, shown in the figure above as , , and .
In order to analytically continue to I need to compute the Puiseux
series expansions of each fibre element at the point and use these
series to keep track of which root is which. (A PuiseuxTSeries
object
represents a collection of conjugate PuiseuxXSeries
. In a sense, a
PuiseuxTSeries
is synonymous with a place on the corresponding Riemann
surface.) There are a number of computational and software design
challenges with this concept:
PuiseuxXSeries
with the
corresponding root at ?PuiseuxXSeries
I need to
compute in order to accurately perform the matching in 1. above?PathFactory
object determine this? The
RiemannSurfacePath
? The AnalyticContinuator
itself?The answers to these questions depend on some choice of data model for places and divisors on a Riemann surface and this is something that I’m currently designing and implementing.
Below are some scribblings and notes I made on the arrangement of these classes.
Board #1. Here I have some notes about the relationship between the
analytic continuators and Riemann surface paths. I write some thoughts
about how the AnalyticContinuator.analytically_continue()
function
should work. Based on some discussions with Daniel I think there will
need to be a close dependency on the path itself in the construction of
the continuator. In particular, the starting fibre of the path (I need
to initialize paths with an entire fibre of -roots in order for Smale
to work) will determine the ordering of the underlying PuiseuxXSeries
as well as the number of terms needed in each.
Board #2. Here I scribble some throughts about Puiseux series matching. I identified that there are two cases to consider:
The latter case appears when somebody wants to construct a path starting
at a place (synonymous with a PuiseuxTSeries
) where the -part
of the place is a branch point of the curve.