Tretkoff's algorithm for finding a canonical homology basis
homology(f, x, y)
irreducible polynomial in x and y
This procedure is an implementation of an algorithm given in "Combinatorial Group Theory, Riemann Surfaces and Differential Equations", C.L. Tretkoff and M.D. Tretkoff, Contemporary Mathematics, Vol 33, 1984. This algorithm computes cycles a1,…,ag,b1,…,bg that form a basis for the homology of a Riemann surface given as a polynomial f in two variables x and y. The Riemann surface is the covering surface for y as an N-valued function of x, where N=degree⁡f,y is the degree of covering. The number g is the genus of the Riemann surface. These 2⁢g cycles have the following intersection indices: (ai,bi) have intersection number 1, and all others (ai,aj), (bi,bj) for all i,j and (ai,bj) for i≠j have intersection number 0. This means that the basis is a canonical basis.
The result of H:=homology(f, x, y) is a table H containing the following:
H[basepoint] is a value x0 for x for which y takes N different values, so x0 is not a branchpoint nor a singularity.
H[sheets] is a list L=fsolve⁡subs⁡x=x0,f,y,complex of pre-images of x0. This list of y-values at x=x0 effectively labels the sheets of the Riemann surface at x=x0. Sheet 1 is L1, sheet 2 is L2, and so on.
H[genus] gives the genus g of the Riemann surface.
H[cycles] is a table containing a set of cycles 1..r, with r=2⁢g+N−1. In this set, 2⁢g of these cycles are linearly independent over the integers in the homology. The cycles are given as lists. The elements of the list at odd positions denote which sheet one is on, the elements at even positions denote around which branchpoint one needs to circle to get from the sheet at the previous position to the sheet at the next position. The branchpoint is given together with the permutation of the sheets around that branchpoint. The lists representing the cycles are cyclic: circling around the last branchpoint brings one back to the sheet given at position 1.
H[linearcombination] is a matrix with 2⁢g rows and r columns, giving the linear combinations of the elements in homology[cycles], which give cycles ai or bi,i=1..g. The cycle ai is given by the i-th row of this matrix. The cycle bi is given by the (g+i)-th row of this matrix.
H[canonicalcycles] is a table containing the explicit representation of the cycles ai and bi,i=1..g. These cycles are also given by cyclic lists. Again, the elements at odd positions of the list are sheetnumbers. The elements at even positions of the list are branchpoints, together with a number indicating how many times one has to circle around the branchpoint in the counter-clockwise direction. If this number is negative, one has to circle around to the branchpoint as many times in the clockwise direction.
Download Help Document