On November 3, 2006 9:48 AM David Harvey wrote: > > On Nov 3, 2006, at 9:37 AM, Bill Page wrote: > > > > > Maybe it is interesting to consider how Axiom handles these > > coercions? For example: > > > > sage: x = axiom('x::MPOLY([x],INT)') > > sage: x.type() > > MultivariatePolynomial([x],Integer) > > sage: y = axiom('y::MPOLY([y],INT)') > > sage: y.type() > > MultivariatePolynomial([y],Integer) > > sage: z = x*y > > sage: z > > y x > > sage: z.type() > > MultivariatePolynomial([x],MultivariatePolynomial([y],Integer)) > > sage: w = axiom('(x*y)::MPOLY([x,y],INT)') > > sage: w > > y x > > sage: w.type() > > MultivariatePolynomial([x,y],Integer) > > What would axiom do if you started off with x and y in a *univariate* > polynomial ring? >
sage: x=axiom('x::UP(x,INT)') sage: y=axiom('y::UP(y,INT)') sage: (x*y).type() UnivariatePolynomial(x,UnivariatePolynomial(y,Integer)) In Axiom this can be coerced to MultivariatePolynomial ([x,y],Integer), but right now I do not yet have a method in the Sage/Axiom interface that can easily apply Axiom's :: coercion/conversion operator to an Sage Axiom ojbect. So if you read my example above carefully and critically you will see that the command: axiom('(x*y)::MPOLY([x,y],INT)') is actually bogus, although the result shown is correct. In axiom.console(): (1) -> x:=x::UP(x,INT) (1) x Type: UnivariatePolynomial(x,Integer) (2) -> y:=y::UP(y,INT) (2) y Type: UnivariatePolynomial(y,Integer) (3) -> x*y (3) y x Type: UnivariatePolynomial(x,UnivariatePolynomial(y,Integer)) (4) -> (x*y)::MPOLY([x,y],INT) (4) y x Type: MultivariatePolynomial([x,y],Integer) Regards, Bill Page --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@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-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---