edgarcosta / endomorphisms

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

Assert failure in HeuristicJacobianFactor on smooth plane quartic #36

Closed AndrewVSutherland closed 4 years ago

AndrewVSutherland commented 4 years ago

I am hitting an ssert failure at line 73 of Rosati.m (I'm using CHIMP):

R<x,y,z>:=PolynomialRing(RationalsExtra(300),3); C:=PlaneCurve(x^4 - x^2y^2 + y^4 + yz^3); HeuristicJacobianFactors(C);

HeuristicJacobianFactors( X: Curve over Rational Field defined by x^4 - x^2y^2 + y^4 + y... ) SplitComponents( P: [1.273966989243803569282078974450871097837603645553309364674..., GeoEndoRep: [ [ [1 0 0] [0 1 0] [0 0 1], [1 0 0 0 0 0] [0 1 0 0 0 0] [... ) RootsOfIsotypicalComponent( Q: [0.594526518943438762880598076969222413388186637007333140499..., mor: [ [0 1 0] [0 0 1], [0 0 1 0 0 0] [1 0 0 1 0 0] [2 0 0 0 1 ..., incdata: [ Number Field with defining polynomial x^6 - 3x^5 + 6x^4... ) SplittingIdempotents( Q: [0.594526518943438762880598076969222413388186637007333140499..., mor: [ [0 1 0] [0 0 1], [0 0 1 0 0 0] [1 0 0 1 0 0] [2 0 0 0 1 ..., incdata: [ Number Field with defining polynomial x^6 - 3x^5 + 6x^4... ) EndomorphismStructure( EndoRep: [ [ [1 0] [0 1], [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1] ... ) RosatiFixedModule( EndoRep: [ [ [1 0] [0 1], [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1] ... ) In file "/home/drew/Dropbox/github/CHIMP/endomorphisms/endomorphisms/magma/polarization/Rosati.m", line 73, column 5:

assert test;

^ Runtime error in assert: Assertion failed

JRSijsling commented 4 years ago

The reason for this bug is a Rosati fixed module calculation in a context where there is no given polarization and where this question therefore makes no sense. The most recent push should fix this. After adding it, I get:

[ 
    [ [*
        Hyperelliptic Curve defined by y^2 = x^6 + 6*x^5 + 6*x^4 - 14*x^3 - 
            9*x^2 + 18*x - 6 over Rational Field,
        [*
            [0 1 0]
            [0 0 1],

            [  2   0   0   0   1   0]
            [5/2   0   0   0   1 1/2]
            [  0   0   1   0   0   0]
            [  1   0  -1   1   0   0]
        *]
    *] ],
    [ [*
        Hyperelliptic Curve defined by y^2 = x^3 - 48 over Rational Field,
        [*
            [1 0 0],

            [1 2 1 1 0 0]
            [0 0 0 0 1 0]
        *]
    *] ]
]
AndrewVSutherland commented 4 years ago

@JRSijsling Thanks for the quick fix! I can confirm that this works (after doing a git submodule update --remote to refresh CHIMP).

AndrewVSutherland commented 4 years ago

Actually, I still hit the same assert failure for the curve x^4 + y^4 - 3yz^3 = 0:

R<x,y,z>:=PolynomialRing(RationalsExtra(300),3); C:=PlaneCurve(x^4 + y^4 - 3yz^3);
HeuristicJacobianFactors(C);

HeuristicJacobianFactors( X: Curve over Rational Field defined by x^4 + y^4 - 3yz^3 ) SplitComponents( P: [0.420983077042957049560031670231234824877929144753111652032..., GeoEndoRep: [ [ [ ... ) RootsOfIsotypicalComponent( Q: [0.120474564111814464858349904787290072876663491957455850501..., mor: [ [0 1 0] [0 0 1], [ 1 0 0 0 0 0] [ 0 1 0 0 1 -1]..., incdata: [ Number Field with defining polynomial x^12 - 6x^11 + 21... ) SplittingIdempotents( Q: [0.120474564111814464858349904787290072876663491957455850501..., mor: [ [0 1 0] [0 0 1], [ 1 0 0 0 0 0] [ 0 1 0 0 1 -1]..., incdata: [ Number Field with defining polynomial x^12 - 6x^11 + 21... ) EndomorphismData( GeoEndoRep: [ [ [1 0] [0 1], [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1] ..., GalK: [ { (1, 2)(3, 12)(4, 10)(5, 11)(6, 8)(7, 9), (1, 10, 11)(2,... ) EndomorphismStructure( EndoRep: [ [ [1 0] [0 1], [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1] ... ) RosatiFixedModule( EndoRep: [ [ [1 0] [0 1], [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1] ... ) In file "/home/drew/Dropbox/github/CHIMP/endomorphisms/endomorphisms/magma/polarization/Rosati.m", line 73, column 5:

assert test;

^ Runtime error in assert: Assertion failed

JRSijsling commented 4 years ago

The same path involving a Rosati calculation is taken in EndomorphismData later in DecFacts.m and I did not correct accordingly. After the most recent push, this comes out (these curves have j-invariants 0, 1728 and 1728):

[
    [ [*
        Hyperelliptic Curve defined by y^2 = x^3 - 576 over Rational Field,
        [*
            [1 0 0],

            [-1  1  1  0  0  1]
            [-1  1  0  0  1  1]
        *]
    *] ],
    [ [*
        Hyperelliptic Curve defined by y^2 = x^3 + 1/14641*(-210816*$.1^5 + 
            46656*$.1^2)*x over Number Field with defining polynomial x^6 - 3 
        over the Rational Field,
        [*
            [                    0    1/2*(-2*$.1^3 + 1) 1/4*($.1^5 + 5*$.1^2)],

            [ 1 -1 -1  0 -2  1]
            [ 1  1 -2 -1 -2 -1]
        *]
    *], [*
        Hyperelliptic Curve defined by y^2 = x^3 + (-384*$.1^5 + 576*$.1^2)*x 
        over Number Field with defining polynomial x^6 - 3 over the Rational 
        Field,
        [*
            [                     0      1/2*(2*$.1^3 + 1) 1/4*(-$.1^5 - 
                5*$.1^2)],

            [ 1 -1 -1 -2 -4  1]
            [ 2  2 -3 -3 -4 -2]
        *]
    *] ]
]
AndrewVSutherland commented 4 years ago

Thanks, I can confirm this fixes the problem for me as well.