edgarcosta / endomorphisms

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

Something funny with endomorphism computation #58

Closed jvoight closed 9 months ago

jvoight commented 1 year ago

Here's the correct thing:

> _<x> := PolynomialRing(Rationals());                                         
> F<z3> := NumberField(x^2+x+1);
> R<a,b,c> := PolynomialRing(F,3);
> f := a^4 + (z3-1)*a^3*b + (3*z3+2)*a^3*c -3*a^2*c^2 + (2*z3+2)*a*b^3 -
> 3*z3*a*b^2*c + 3*z3*a*b*c^2 - 2*z3*a*c^3 - z3*b^3*c + 3*z3*b^2*c^2 +
> (-z3+1)*b*c^3 + (z3+1)*c^4;
> C := Curve(ProjectiveSpace(R),f);
> HeuristicEndomorphismDescription(C : CC := true);
abelian variety of dimension 3 with endomorphism algebra the number field 
defined by t^3 - 3*t - 1

> HeuristicEndomorphismAlgebra(C : CC := true);
<[ <1, 1>, <1, 1>, <1, 1> ], [
    <1, 3, [ -1, -3, 0, 1 ], 1, 3>
], <1, -1>, 3>
Associative Algebra of dimension 3 with base ring Rational Field
[ (1 0 0), (-1  0 -2), (-1  2  2) ]

But here are two things that don't work.

> _<x> := PolynomialRing(Rationals());
> F<z3> := NumberFieldExtra(x^2+x+1);   // used NumberFieldExtra instead
> R<a,b,c> := PolynomialRing(F,3);
> f := a^4 + (z3-1)*a^3*b + (3*z3+2)*a^3*c -3*a^2*c^2 + (2*z3+2)*a*b^3 -
> 3*z3*a*b^2*c + 3*z3*a*b*c^2 - 2*z3*a*c^3 - z3*b^3*c + 3*z3*b^2*c^2 +
> (-z3+1)*b*c^3 + (z3+1)*c^4;
> C := Curve(ProjectiveSpace(R),f);
> HeuristicEndomorphismDescription(C : CC := true);
abelian variety of dimension 3 with endomorphism algebra QQ

(This does not seem to improve when we increase precision.)

> _<x> := PolynomialRing(Rationals());
> F<z3> := NumberField(x^2+x+1);
> R<a,b,c> := PolynomialRing(F,3);
> f := a^4 + (z3-1)*a^3*b + (3*z3+2)*a^3*c -3*a^2*c^2 + (2*z3+2)*a*b^3 -
> 3*z3*a*b^2*c + 3*z3*a*b*c^2 - 2*z3*a*c^3 - z3*b^3*c + 3*z3*b^2*c^2 +
> (-z3+1)*b*c^3 + (z3+1)*c^4;
> C := Curve(ProjectiveSpace(R),f);
> HeuristicEndomorphismAlgebra(C);   // compute over ground field

HeuristicEndomorphismAlgebra(
    X: Curve over L defined by $.1^4 + (-L.1 - 1)*$.1^3*$.2 + (-3*L...
)
EndomorphismRepresentation(
    GeoEndoRep: [ [* [1 0 0] [0 1 0] [0 0 1],  [1 0 0 0 0 0] [0 1 0 0 0 0] [...,
    K: Rational Field,
    h: Mapping from: Rational Field to FldNum: L
)
EndomorphismRepresentation(
    GeoEndoRep: [ [* [1 0 0] [0 1 0] [0 0 1],  [1 0 0 0 0 0] [0 1 0 0 0 0] [...,
    GalK: [* { (1, 2) }, Mapping from: GrpPerm: $, Degree 2, Order 2 t...
)
In file "/Users/jvoight/Dropbox/github/CHIMP/endomorphisms/endomorphisms/magma/\
heuristic/OverField.m", line 48, column 9:
>>         assert test;
           ^
Runtime error in assert: Assertion failed

So there is some issue with NumberFieldExtra or descent to the ground field, something perhaps related to relative extensions. Might be two bugs, might be related to the same thing; we may not have encountered it before because most (not all) of our testing is over the rationals.

edgarcosta commented 1 year ago

The second one is not a bug, but very confusing, as what happens when one calls NumberFieldExtra, it calls polredabs:

> _<x> := PolynomialRing(Rationals());
> F<z3> := NumberField(x^2+x+1);
> F;
Number Field with defining polynomial x^2 + x + 1 over the Rational Field
> z3^3;
1
> F<notz3> := NumberFieldExtra(x^2+x+1);
> F;
Number Field with defining polynomial x^2 - x + 1 over the Rational Field
> notz3^3;
-1
edgarcosta commented 1 year ago

I made this confusion a separate issue #59

edgarcosta commented 9 months ago

I'm closing this one in light of #68, as you noticed two issues, and now we have two independent issues for your findings 🙃