Brad Klee on Tue, 09 Oct 2018 05:44:32 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Introduction, Curve Algorithm


Hi Bill Allombert and Pari Users,

A slight revision with a new file tree is now available at GitHub:

> https://github.com/bradklee/Hyperelliptic/
>> https://github.com/bradklee/Hyperelliptic/releases

Per the request, I will include a more detailed explanation of
theory & experiment. It may also help to read the introduction
to Pierre Lairez "Computing Periods..." [1], which discusses
the technique of Hermite Reduction.

Thanks,

Brad

0. BACKGROUND :
[1] https://hal.inria.fr/hal-00981114v3

1. THEORY.
For a more detailed description of the algorithm, let us start
with valid input and the two main function calls:

poly = V(x) = c_1*x + c_2*x^2 + ...  + c_d*x^d  ;
HyperellipticPicardFuchs( poly ) = [ H, DT, A, F ] ;
CheckCertificate([ H, DT, A, F ]) = (A*DT+dF/dt)%(2H-z) = 0.

Potential V(x) defines a surface H(x,y) = (1/2)*y^2+V(x), with
level curves C_z = { (x,y) in R^2 : z = 2*H(x,y) }. Complex
transformation H(x,y)->H'(x,y)=H(x,i*y) allows us to define
orthogonal curves C'_z = { (x,y) in R^2 : z = 2*H'(x,y) }. Taken
together C_z and C'_z form a one dimensional, algebraic boundary
of the Riemann surface S_z = { (x,y) in C^2 : z = 2*H(x,y) }, a
2-manifold and also a subset of C^2 ~ R^4 .

Next we define dt = dq/p, the holomorphic differential of time
evolution along S_z. The integral of dt around a closed loop  L_z
on S_z ( sometimes but not always L_z is a subset of C_z or
C'_z ) depends on z through the variation of curvature between
L_{z} and L_{z+dz}. Period function T(z) = int_{L_z} dt obeys a
Picard-Fuchs type differential equation. That is, the coefficients
A_n annihilate a sum over z-derivatives of a period function,

0 = sum_{n=0}^N A_n*(d^n T/dz^n)  = int_{L_z} A*DT .
DT_n = dt*(n!!)*(1/2)^n / y^(2*n).

Given vector A, we need a certificate function F to verify the
zero sum via CheckCertificate. Function HermiteReduce
calculates

[DT_n] = f_n(x)*dt = DT_n + dF_n/dt,
( here brackets denote reduction modulo exact differentials )

with f_n(x) degree-bounded polynomials in the variable x.
The annihilator A is then calculated to satisy A*[DT] = 0.
Thus A*DT = -d(sum_n A_n*F_n)/dt, which identifies that
F = sum_n A_n*F_n . As A*DT equals an exact differential,
an integral around any closed loop L_z must equal 0.

The creative and sort-of difficult part is that HermiteReduce
uses only matrix multiplication. How is this possible?

The degree bound on f_n(x) allows us to work within a finite
dimensional vector space, where we can encode all reductions
into just one system of linear equations, represented by square
matrix G. It's easy to prove that generic matrix G is invertible for
any valid V(x). Inverting G, we may then extract component
matrices MU, MV, dMV, which are invariants of S_z, and
invariants of the Hermite reduction.

This is at once too much and too little theory. I will stop short
here, and promise more explanation, including pictures (!), in
a forthcoming dissertation chapter.

2. EXPERIMENT.
https://github.com/bradklee/Hyperelliptic/tree/master/Examples

2a. GMatrices.gp
This file will print a few G matrices for potentials with arbitrary
coefficients.
It should be easy to see the trend that allows us to invert any matrix G
from valid input V(x).

2b. EllipticCurves.gp
The easiest examples are elliptic curves. Each torus S_z has a real and
complex period, which are related by a second order differential equation.
Vector A has three components. In two special cases vector A determines
a hypergeometric differential equation, solved by T(z) = 2F1(a,b;c;k*z).

2c. Genus2.gp
We might expect that when Riemann surface S_z has genus g=2,
then vector A will have 2*g+1=5 components. This is only true in the
absence of parity symmetry. When V(x) = V(-x), the vector space of
reduced one-forms decomposes into symmetric and antisymmetric
subspaces. All elements of [DT] belong to the symmetric subspace;
therefore, vector A has only three components.

2d. GenusDegree.gp
The dimensionality of vector A depends primarily on the degree of V(x),
and the symmetry property V(x) ?= V(-x). However, we must also take into
account the topology of Riemann surface S_z, which requires A to have
an odd number of components.



On Sun, Oct 7, 2018 at 6:08 AM Bill Allombert
<Bill.Allombert@math.u-bordeaux.fr> wrote:
>
> Hello Brad, thanks for your contribution.
>
> Could you explain what this does or give a reference to some
> explanation ?