Before looking under the hood at what needs to be done to get something like 12-descent in GP/PARI or Sage, let me briefly describe 12-descent calculations from the "User's eye".
There are 4 basic steps to 12-descent calculations.
- Compute small representatives of the 3-Selmer group as ternary cubic forms.
- Compute small representatives of the 4-Selmer group as pairs of quaternary quadratic forms.
- Given a 3-Selmer element C3 and a 4-Selmer element C4, find a small way to write the elements C3 + C4 and C3 - C4 in the 12-Selmer group as some kind of quadric intersections together with maps from these quadric intersections back to C4.
- Search for points on the quadric intersections obtained in Step #3.
Here small means "minimized" and "reduced" and pertains to extensive work of Cremona, Fisher, and Stoll, among others. (I apologize if I'm leaving you out!)
For Mordell curves, Steps 1 and 2 might not take too long, provided you are willing to assume GRH when computing class groups. This snippet of code:
E := EllipticCurve([0,-86069^5]);
Sel2 := TwoDescent(E);
Sel4 := [FourDescent(C) : C in Sel2];
Sel3 := ThreeDescentByIsogeny(E);
Will finish in a few seconds on the magma calculator.
While not very time intensive, this does involve a fair chunk of mathematics that's in magma and not in Sage. Especially some algebraic geometry.
Step 3 is computationally intensive, taking about an hour for the curve above, and definitely the most technical part of the calculation. Tom Fisher wrote a paper about what goes into it:
and he wrote the code that's in Magma.
I must admit that I've not read this paper aside from the examples. I only have a "user's" understanding of the process, but I get the impression that Step 3 might be hard to implement if you don't have a lot of the experience and tools you would gain from implementing Steps 1 and 2.
Step 4 uses a p-adic version due to Mark Watkins of Noam Elkies' ANTS IV Point Search Algorithm. As Noam has mentioned the ideas aren't that complicated, so an open implementation should be possible and would conceivably be quite useful. This is the most time consuming part of these calculations in practice as it can go on for weeks. I think an open implementation of this would be incredibly useful, especially if parallelized.
I think this is all I'll say for now, other than to point out that the series of papers:
by Cremona, Fisher, O'Neil, Simon, and Stoll describe much of the way higher descents are calculated in Magma. This is what I'll be reading this semester to get a handle on what needs to be done.