Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

polycyclic presentation

I try to apply ideas from Sutherland's paper about volcanoes (Titles "Isogeny volcanoes" 2012) , in particular I want to obtain a polycyclic presentation of a class group 𝐺 (of negative discriminant, viewed as a group of binary quadratic forms). I easily get a set 𝑆 of generators (of 𝐺) of prime norm and from those I want to implement the following in SageMath :

  1. Get a polycylic presentation of $G$ from $S$.
  2. Compute the discrete log of elements of 𝐺 with respect to this polycyclic presentation.

Q/ Is there an efficient way to do this by using GAP pcgs inside SageMath ?

For now, here is what I do :

 # gens is a set of generators of the Class group I am interested in.
G = FreeGroup(len(gens))

relations_orders = [G([i+1]*(g.order())) for i,g in enumerate(gens)]
relations =[]

for i,g in enumerate(gens):
    nexts = gens[i+1:]
    for j,a in enumerate(nexts):
        try:
            d = discrete_log(g,a,operation="+")               #d*a - g =0
            relations.append( G([j+1+i+1]*d+[-i-1]) )
        except:
            pass

rels = relations+relations_orders

H = G/rels

Now, I would like to use gap.interact() in order to call Pcgs(H) in GAP and then recover it back in Sage.