Opened 10 years ago

Last modified 6 years ago

#12851 new enhancement

sage does not calculate genus of generic projective plane curves

Reported by: mariah Owned by: AlexGhitza
Priority: major Milestone: sage-6.4
Component: algebraic geometry Keywords:
Cc: minz Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges


sage-4.8 gives the following:

sage: R.<a,b> = PolynomialRing(QQ, 2)
sage: K.<a,b> = FractionField(R)
sage: R.<x,y,z> = PolynomialRing(K, 3)
sage: f = a*(x^3 + y^3 + z^3) + b*x*y*z
sage: E = Curve(f)
sage: type(E)
<class 'sage.schemes.plane_curves.projective_curve.ProjectiveCurve_generic'>
sage: print E.genus()
TypeError                                 Traceback (most recent call last)

/home/mariah/sage/sage-4.8-x86_64-Linux-core2-fc/<ipython console> in <module>()

/home/mariah/sage/sage-4.8-x86_64-Linux-core2-fc/local/lib/python2.6/site-packages/sage/schemes/plane_curves/curve.pyc in genus(self)
     88         The geometric genus of the curve.
     89         """
---> 90         return self.geometric_genus()
     92     def geometric_genus(self):

/home/mariah/sage/sage-4.8-x86_64-Linux-core2-fc/local/lib/python2.6/site-packages/sage/schemes/plane_curves/curve.pyc in geometric_genus(self)
    129             return self.__genus
    130         except AttributeError:
--> 131             self.__genus = self.defining_ideal().genus()
    132             return self.__genus

/home/mariah/sage/sage-4.8-x86_64-Linux-core2-fc/local/lib/python2.6/site-packages/sage/rings/polynomial/multi_polynomial_ideal.pyc in __call__(self, *args, **kwds)
    599         if not R.base_ring().is_field():
    600             raise ValueError("Coefficient ring must be a field for function '%s'."%(self.f.__name__))
--> 601         return self.f(self._instance, *args, **kwds)
    603 require_field = RequireField

/home/mariah/sage/sage-4.8-x86_64-Linux-core2-fc/local/lib/python2.6/site-packages/sage/rings/polynomial/multi_polynomial_ideal.pyc in genus(self)
   1638             import sage.libs.singular
   1639             genus = sage.libs.singular.ff.normal__lib.genus
-> 1640             self.__genus = Integer(genus(self))
   1641             return self.__genus

/home/mariah/sage/sage-4.8-x86_64-Linux-core2-fc/local/lib/python2.6/site-packages/sage/libs/singular/ in sage.libs.singular.function.SingularFunction.__call__ (sage/libs/singular/function.cpp:10114)()

TypeError: Cannot call Singular function 'genus' with ring parameter of type '<class 'sage.rings.polynomial.multi_polynomial_ring.MPolynomialRing_polydict_domain'>'

The equivalent Magma code (which works) is:

K<a,b> := FunctionField(Rationals(), 2);
R<x, y, z> := PolynomialRing(K, 3);
P2 := ProjectiveSpace(R);
f := a*(x^3 + y^3 + z^3) + b*x*y*z;
E := Curve(P2, f);
Genus(E);  // returns 1

Change History (7)

comment:1 Changed 10 years ago by minz

  • Cc minz added

comment:2 Changed 9 years ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:3 Changed 8 years ago by vbraun_spam

  • Milestone changed from sage-6.1 to sage-6.2

comment:4 follow-up: Changed 8 years ago by jakobkroeker

Not sure if the following is equivalent Singular-source, but if, it works for recent Singular:

ring rng = (0,a,b),(x,y,z),dp;
poly f = a*(x^3 + y^3 + z^3) + b*x*y*z;
genus(f); // 1

However, Singular's genus() is still not bugfree:

comment:5 Changed 8 years ago by vbraun_spam

  • Milestone changed from sage-6.2 to sage-6.3

comment:6 Changed 8 years ago by vbraun_spam

  • Milestone changed from sage-6.3 to sage-6.4

comment:7 in reply to: ↑ 4 Changed 6 years ago by slelievre

Replying to jakobkroeker:

However, Singular's genus() is still not bugfree:

Singular bug 259 appears to be fixed:

Note: See TracTickets for help on using tickets.