# Magma Coercion Syntax

Any Magma experts who know what I should write below in place of "Roots(ysoln)"? I basically want the roots of a FldFunRatMElt (variable here happens to show as "\$.2"). I would guess there's some simple coercion needed, but I've had no luck finding examples for this on the internet. I really just need to know the rational roots. Thanks!

PP<x,y,z>:=ProjectiveSpace(Rationals(),2);
CU:=Curve(PP, (z + x - y)*(z - x + y)*(-z + x + y)*(z + x + y));
curve:=DefiningPolynomials(CU)[1];
ysoln:=Evaluate(curve,[1,y,1]);
ysoln; Type(ysoln);
ysoln:=Evaluate(ysoln,[1,y,1])/y;
ysoln:=Evaluate(ysoln,[1,y,1])*y;
// Other things really happen above, but denominator becomes 1
ysoln; Type(ysoln);

// I would like to just do this
Roots(ysoln);
// but Magma refuses...

// I know the Roots function works if set-up properly:
R<y>:=PolynomialRing(Rationals());
fy:=y^3-8;
Roots(fy);

-
Usually you want to Evaluate to reduce the ring dimension. Here it seems you also need to move from a function field to a polynomial ring with Numerator.  R<t>:=PolynomialRing(Rationals());  Roots(Numerator(Evaluate(ysoln,[1,t,1])));  [ <-2, 1>, <0, 2>, <2, 1> ] –  Junkie Feb 1 '12 at 20:43
Those two lines worked! Thanks! I had tried something similar, but didn't think to use the Numerator function. Magma is a bit clunky, but hopefully improving... –  bobuhito Feb 3 '12 at 7:35