#11930: disallow non-smooth hyperelliptic curves, and let hyperelliptic curves
know
they are not singular
-------------------------------------------------------------+--------------
Reporter: dkrenn | Owner:
cremona
Type: defect | Status:
needs_review
Priority: major | Milestone:
sage-5.1
Component: elliptic curves | Resolution:
Keywords: hyperelliptic curve singular smooth sd35 | Work issues:
Report Upstream: N/A | Reviewers:
Marco Streng, Damiano Testa, David Eklund
Authors: Daniel Krenn, Marco Streng, Damiano Testa | Merged in:
Dependencies: | Stopgaps:
-------------------------------------------------------------+--------------
Old description:
> Hyperelliptic curves are smooth curves mathematically. These patches add
> a check for this to the constructor and implement {{{is_singular}}} to
> always return {{{False}}}
>
> Example
> {{{
> sage: R.<x> = PolynomialRing(GF(3))
> sage: H=HyperellipticCurve(x^5+1)
> sage: H.is_singular()
> # used to return True, now returns False
> sage: H.is_smooth()
> # used to return False, now returns True
> sage: HyperellipticCurve(x^5)
> # used to return a curve y^2 = x^5, now raises an error
> }}}
>
> Apply
>
> * [attachment:11930c.patch]
> * [attachment:11930_is_singular2.patch]
New description:
Hyperelliptic curves are smooth curves mathematically. These patches add a
check for this to the constructor and implement {{{is_singular}}} to
always return {{{False}}}
Example
{{{
sage: R.<x> = PolynomialRing(GF(3))
sage: H=HyperellipticCurve(x^5+1)
sage: H.is_singular()
# used to return True, now returns False
sage: H.is_smooth()
# used to return False, now returns True
sage: HyperellipticCurve(x^5)
# used to return a curve y^2 = x^5, now raises an error
}}}
Apply
* [attachment:11930d.patch]
* [attachment:11930_is_singular2.patch]
--
Comment (by mstreng):
Here's a diff between the c and d patches, excluding changed line numbers
and hashes:
{{{
< + This class also allows curves of genus zero or one, which are
stricly
> + This class also allows curves of genus zero or one, which are
strictly
126,127c126,130
< + A hyperelliptic curve should not be given by polynomials of degree
greater
< + than `2g+2`, where `g` is the genus.::
> + The input for a (smooth) hyperelliptic curve of genus `g` should
not
> + contain polynomials of degree greater than `2g+2`. In the following
> + example, the hyperelliptic curve has genus 2 and there exists a
model
> + `y^2 = F` of degree 6, so the model `y^2 + yh = f` of degree 200 is
not
> + allowed.::
137c140
< +
> +
152c155,157
< + as base ring, but only checks smoothness over `QQ`, not `ZZ`::
---
> + as base ring, but only checks smoothness over `\QQ`, not over
Spec(`\ZZ`).
> + In other words, it is checked that the discriminant is non-zero,
but it is
> + not checked whether the discriminant is a unit in `\ZZ^*`.::
155,156c160,161
< + sage: HyperellipticCurve(4*x^7+8*x+8)
< + Hyperelliptic Curve over Integer Ring defined by y^2 = 4*x^7 +
8*x + 8
> + sage: HyperellipticCurve(3*x^7+6*x+6)
> + Hyperelliptic Curve over Integer Ring defined by y^2 = 3*x^7 +
6*x + 6
264c269
< + ValueError: curve is not smooth
> + ValueError: curve is not smooth
273c278
< + raise ValueError, "curve is not smooth"
> + raise ValueError, "curve is not smooth"
308c313
< #checking first that Cartier matrix is not already cached.
Since it can be called by either Hasse_Witt or a_number
> #checking first that Cartier matrix is not already cached.
Since
}}}
Apply 11930d.patch and then 11930_is_singular2.patch
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11930#comment:37>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.