Dear David,
one can construct the apropriate quotient

P=QQ['a,b,x1,x2,x3']
K.<a,b,x1,x2,x3>=FractionField(P)
R.<y1,y2,y3>=K['y1,y2,y3']
I = R.ideal(y1^2 - x1^3 - a*x1 - b, y2^2 - x2^3 - a*x2 - b,
y3^2 - x3^3 - a*x3 - b)
S=quotient(R,I)

sage: S
Quotient of Multivariate Polynomial Ring in y1, y2, y3 over Fraction
Field of Multivariate Polynomial Ring in a, b, x1, x2, x3 over
Rational Field by the ideal (y1^2 - x1^3 - a*x1 - b, y2^2 - x2^3 -
a*x2 - b, y3^2 - x3^3 - a*x3 - b)

but

E = EllipticCurve(S, [a,b])

does not work  (in the present implementation)

Andrzej

On 15 Sty, 08:35, achrzesz <[EMAIL PROTECTED]> wrote:
> Dear Carl,
> I like your code; it is elegant and realy quick
> but it seems that finishing your code
> with Paul Zimmermann's approach
>
> I2 = singular(I).groebner()
> #print I.reduce(n12);
> print singular.reduce((n12), I2)
>
> (althout less elegant)
> is a little bit faster
> (0.06 -> 0.05 on my comp. :)
>
> I want also add a question to David Harvey questions
>
> In experimenting with Lenstra factorization method one needs
> multiplication on ell.curv over the Ring Z_(p*q). GP-Pari allows
> for that so I'm  doing it using gp interface. Is it difficult to
> implement
> a similar functionality in Sage?
>
> Andrzej Chrzeszczyk
>
> On 15 Sty, 03:28, David Harvey <[EMAIL PROTECTED]> wrote:
>
> > On Jan 14, 2008, at 10:09 PM, Carl Witty wrote:
>
> > > Here is a more idiomatic way to do this computation in Sage.  We work
> > > in the fraction field of a multivariate polynomial ring; this means
> > > that our polynomial arithmetic is handled by libSingular instead of by
> > > maxima, and that we can get the numerator directly with "numerator",
> > > since fraction field elements are always normalized.  Also, we use
> > > Sage's wrapper of ideals and Groebner bases (which I believe is
> > > implemented with libSingular), rather than calling Singular.
> > > (Avoiding the call to "factor(s1-s2)" means that this version is much
> > > faster.)
>
> > > sage: R.<x1,y1,x2,y2,x3,y3,a,b> = QQ[]
> > > sage: eq1 = y1^2 -(x1^3+a*x1+b)
> > > sage: eq2 = y2^2 -(x2^3+a*x2+b)
> > > sage: eq3 = y3^2 -(x3^3+a*x3+b)
> > > sage: lambda12 = (y1 - y2)/(x1 - x2)
> > > sage: x4       = (lambda12*lambda12 - x1 - x2)
> > > sage: nu12     = (y1 - lambda12*x1)
> > > sage: y4       = (-lambda12*x4 - nu12)
> > > sage: lambda23 = ((y2 - y3)/(x2 - x3))
> > > sage: x5       = (lambda23*lambda23 - x2 - x3)
> > > sage: nu23     = (y2 - lambda23*x2)
> > > sage: y5       = (-lambda23*x5 - nu23)
> > > sage: s1 =(x1 - x5)*(x1 - x5)*((y3 - y4)*(y3-y4) - (x3+x4)*(x3-x4)*
> > > (x3-
> > > x4))
> > > sage: s2 =(x3 - x4)*(x3 - x4)*((y1 - y5)*(y1-y5) - (x1+x5)*(x1-x5)*
> > > (x1-
> > > x5))
> > > sage: n12 = numerator(s1-s2)
> > > sage: I = ideal([eq1,eq2,eq3])
> > > sage: I.reduce(n12)
> > > 0
>
> > What would be *really* nice is if we could work directly in the
> > fraction field of the quotient of R.<x1,y1,x2,y2,x3,y3,a,b> by the
> > appropriate ideal. (Does that even make sense? Is the ideal prime?) I
> > tried to do this but Sage gave up pretty quickly on me. A nice encore
> > would be to do this using Sage's elliptic curve class to do the
> > actual arithmetic. After all EllipticCurves can be defined over any
> > field....
>
> > Here's my dream session:
>
> > sage: R.<x1,y1,x2,y2,x3,y3,a,b> = QQ[]
> > sage: I = R.ideal(y1^2 - x1^3 - a*x1 - b, y2^2 - x2^3 - a*x2 - b,
> > y3^2 - x3^3 - a*x3 - b)
> > sage: S = FractionField(R.quotient(I))     # currently barfs
> > sage: E = EllipticCurve(S, [a, b])
> > sage: P1 = E(x1, y1)
> > sage: P2 = E(x2, y2)
> > sage: P3 = E(x3, y3)
> > sage: (P1 + P2) + P3 == P1 + (P2 + P3)
> > True
>
> > Here's the traceback in the FractionField line:
>
> > /Users/david/sage-2.9/local/lib/python2.5/site-packages/sage/rings/
> > fraction_field.py in FractionField(R, names)
> >      104     if not ring.is_Ring(R):
> >      105         raise TypeError, "R must be a ring"
> > --> 106     if not R.is_integral_domain():
> >      107         raise TypeError, "R must be an integral domain."
> >      108     return R.fraction_field()
>
> > /Users/david/sage-2.9/local/lib/python2.5/site-packages/sage/rings/
> > quotient_ring.py in is_integral_domain(self)
> >      226
> >      227         """
> > --> 228         return self.defining_ideal().is_prime()
> >      229
> >      230     def cover_ring(self):
>
> > /Users/david/sage-2.9/local/lib/python2.5/site-packages/sage/rings/
> > ideal.py in is_prime(self)
> >      275
> >      276     def is_prime(self):
> > --> 277         raise NotImplementedError
> >      278
> >      279     def is_principal(self):
>
> > This suggests maybe the only barrier here is checking primality of
> > the ideal? After that, the fraction field magic should just work
> > right? But surely there is code somewhere to check primality, isn't
> > this in singular or something? I don't know anything about the
> > implementation of multivariate polynomial rings, maybe someone else
> > can help out here.
>
> > david
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to