edgarcosta / endomorphisms

Rigorous computation of the endomorphism ring of a Jacobian
GNU General Public License v2.0
10 stars 8 forks source link

Handle locus of indeterminancy more gracefully #23

Closed jvoight closed 5 years ago

jvoight commented 5 years ago

I guess we can't verify multiplication by 2 because it is in the locus of indeterminacy?

X := HyperellipticCurve(x^5+x+1); P0 := X ! [0,1]; M := Matrix(Rationals(), [[2,0],[0,2]]); DivisorFromMatrixAmbientSplit(X, P0, X, P0, M : LowerBound := 1);

I get

CantorFromMatrixAmbientSplit( X: Hyperelliptic Curve defined by y^2 = x^5 + x + 1 over Ration..., P0: (0 : 1 : 1), Y: Hyperelliptic Curve defined by y^2 = x^5 + x + 1 over Ration..., Q0: (0 : 1 : 1), M: [2 0] [0 2] ) InitializedIterator( X: Hyperelliptic Curve defined by y^2 = x^5 + x + 1 over Ration..., Y: Hyperelliptic Curve defined by y^2 = x^5 + x + 1 over Ration..., M: [2 0] [0 2], n: 6 ) InitializeLift( X: Hyperelliptic Curve defined by y^2 = x^5 + x + 1 over Ration..., Y: Hyperelliptic Curve defined by y^2 = x^5 + x + 1 over Ration..., M: [2 0] [0 2] ) Iterate( P: [ $.1 + O($.1^2), 1 + 1/2*$.1 + O($.1^2) ], Qs: [ [ O($.1^2), 1 + O($.1^2) ], [ O($.1^2), 1 + O($.1^2) ] ], n: 2 ) In file "/Users/jvoight/Dropbox/github/endomorphisms/endomorphisms/magma/puiseu\ x/Branches.m", line 265, column 32:

H := -(F_ev - G_ev) * DF_ev^(-1);

^ Runtime error in '^': Argument 1 is not invertible

JRSijsling commented 5 years ago

Yes, that is the reason. We know that multiplication by 2 comes from an endomorphism anyway.

If we have a start on the corresponding developments of the branches, then we could still get this to work. Of course having a divisorial or Cantor representation of multiplication by n is of interest. It just does not work out of the box yet.

jvoight commented 5 years ago

Yep, but this shows that we have to be careful when we claim we have an algorithm to certify endomorphisms, right? Unless somehow multiplication by n is the only case where the image of AJ is contained in the indeterminacy locus of Mum?

This is like Hensel's lemma where we just need to keep iterating until DF_ev is invertible, which it will eventually be? I'd really like to see the Cantor equations and divisor for multiplication by 2.

Could we at least handle this error gracefully, checking that DF_ev is not invertible and giving an informative ("not implemented") error message?

JRSijsling commented 5 years ago

Ah right, I see your point. Yes, that does matter. After (5.2.12) in our paper there is an argument that adding a multiple of the identity will get us out of the locus. But that in fact does not having anything to do with what is going on here, because it should just work! This bug is truly strange, because the branches are distinct and we are not at a Weierstrass point. So the theory shows that everything should apply.

This is something that I should be able to fix somewhere next week and that likely identifies a nasty bug that seems to squash the starting branches because some precision is too small. In a nutshell: power series instead of Puiseux series should suffice for scalar multiplications in this case, and apparently power series are treated badly. I will for now add something that returns an error message and get back to this.

JRSijsling commented 5 years ago

The error message has been added and the bug has been squashed with extreme prejudice.