Opened 11 years ago
Closed 5 years ago
#11960 closed defect (fixed)
bug in matrix of frobenius when p = 3
Reported by:  Jennifer Balakrishnan  Owned by:  William Stein 

Priority:  major  Milestone:  sage7.2 
Component:  number theory  Keywords:  elliptic curves, Weierstrass form, matrix of Frobenius, sd87 
Cc:  Merged in:  
Authors:  Jennifer Balakrishnan  Reviewers:  Aly Deines 
Report Upstream:  N/A  Work issues:  
Branch:  ac7b356 (Commits, GitHub, GitLab)  Commit:  ac7b3567f0712dbb7cadd75b7c88b77cdbe59e6b 
Dependencies:  Stopgaps: 
Description
The code for computing the matrix of frobenius when p = 3 does not seem to be implemented:
sage: E = EllipticCurve('83a1') sage: EW = E.short_weierstrass_model() sage: EW.is_ordinary(3) True sage: EW.matrix_of_frobenius(3)  NotImplementedError Traceback (most recent call last) /home/jen/<ipython console> in <module>() /home/jen/sage/sage4.7.1/local/lib/python2.6/sitepackages/sage/schemes/elliptic_curves/padics.pyc in matrix_of_frobenius(self, p, prec, check, check_hypotheses, algorithm) 1521 # todo: implement the p == 3 case 1522 if p < 5: > 1523 raise NotImplementedError, "p (=%s) must be at least 5" % p 1524 1525 prec = int(prec) NotImplementedError: p (=3) must be at least 5
However, telling Sage that you're dealing with a hyperelliptic curve calls other code, which seems to run into problems when p = 3:
sage: EW Elliptic Curve defined by y^2 = x^3 + 1269*x  10746 over Rational Field sage: R.<x> = QQ['x'] sage: C= HyperellipticCurve(x^3 + 1269*x  10746) sage: C.matrix_of_frobenius(3) [ 3^109 + 2*3^104 + 3^102 + 2*3^101 + 2*3^100 + 3^99 + 3^97 + 3^92 + O(3^89) 2*3^101 + 3^99 + 2*3^97 + 3^96 + 2*3^95 + 2*3^94 + 3^91 + 3^90 + 2*3^87 + 2*3^86 + 2*3^85 + 3^84 + 3^83 + 2*3^82 + O(3^81)] [ 3^110 + 2*3^109 + 2*3^107 + 2*3^106 + 3^102 + 2*3^101 + 3^100 + 3^99 + 3^98 + 3^97 + 3^94 + 2*3^93 + 2*3^92 + O(3^90) 2*3^102 + 3^101 + 2*3^96 + 3^94 + 2*3^92 + 3^91 + 2*3^89 + 2*3^88 + 3^86 + 3^84 + 3^83 + O(3^82)]
Change History (12)
comment:1 Changed 11 years ago by
Milestone:  sage4.7.3 

comment:2 Changed 7 years ago by
Milestone:  → sage7.2 

I think matrix_of_frobenius is only failing because the short Weierstrass equation has bad reduction at 3. If you manually write down a Weierstrass equation of the form y^2 = P(x)
with good reduction at 3, everything works:
sage: E = EllipticCurve('83a1') sage: E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 + x over Rational Field sage: pr.<x> = PolynomialRing(QQ) sage: a = x^3 + x^2 + x sage: b = x + 1 sage: C = HyperellipticCurve(a + b^2/4) sage: C.matrix_of_frobenius(3) [ 2*3 + 3^5 + 2*3^6 + 3^8 + 3^11 + 2*3^12 + 2*3^13 + 2*3^14 + 2*3^15 + 3^16 + 3^18 + 3^19 + O(3^20) 2*3 + 2*3^2 + 2*3^3 + 2*3^7 + 3^8 + 2*3^9 + 2*3^10 + 2*3^11 + 2*3^13 + 3^14 + 3^15 + 2*3^16 + 3^17 + 3^19 + O(3^20)] [2*3 + 3^2 + 2*3^5 + 3^6 + 2*3^7 + 2*3^9 + 3^10 + 3^11 + 3^12 + 3^13 + 2*3^14 + 2*3^15 + 2*3^16 + 2*3^17 + 2*3^18 + 3^19 + O(3^20) 2 + 2*3^2 + 2*3^3 + 2*3^4 + 3^5 + 2*3^7 + 3^8 + 2*3^9 + 2*3^10 + 3^11 + 3^16 + 2*3^17 + 3^18 + 3^19 + O(3^20)]
comment:3 Changed 7 years ago by
Keywords:  elliptic curves Weierstrass form matrix of Frobenius added 

comment:5 Changed 6 years ago by
Would it make sense to have EllipticCurve.matrix_of_frobenius
call out to HyperellipticCurve.matrix_of_frobenius
and then have the triage among different code options be handled there?
comment:6 Changed 5 years ago by
Keywords:  sd87 added 

comment:7 Changed 5 years ago by
Branch:  → u/jen/3adicfrob 

comment:8 Changed 5 years ago by
Commit:  → ac7b3567f0712dbb7cadd75b7c88b77cdbe59e6b 

Added a fix following the suggestion above to call the hyperelliptic code, passing in a Weierstrass equation that has good reduction at 3.
New commits:
ac7b356  added functionality for matrix of frobenius for p = 3

comment:9 Changed 5 years ago by
Status:  new → needs_review 

comment:10 Changed 5 years ago by
Reviewers:  → Aly Deines 

Status:  needs_review → positive_review 
Looks good.
comment:11 Changed 5 years ago by
Authors:  → Jennifer Balakrishnan 

comment:12 Changed 5 years ago by
Branch:  u/jen/3adicfrob → ac7b3567f0712dbb7cadd75b7c88b77cdbe59e6b 

Resolution:  → fixed 
Status:  positive_review → closed 
Milestone sage4.7.3 deleted