showsage@atlas:~$ sage ---------------------------------------------- ------------------------ | SAGE Version 2.8.13, Release Date: 2007-11-2 1 | | Type notebook() for the GUI, and license() f or information. | ---------------------------------------------- ------------------------ 2+2 sage: 2+2 4 sage: R. = QQ[] sage: R Multivariate Polynomial Ring in x1, x2, y1, y2 , d over Rational Field sage: S = R.quotient([x1^2+y1^2-1-d*x1^2*y1^2, x2^2+y2^2-1-d*x2^2*y2^2]) sage: S Quotient of Multivariate Polynomial Ring in x1 , x2, y1, y2, d over Rational Field by the ide al (-x1^2*y1^2*d + x1^2 + y1^2 - 1, -x2^2*y2^2 *d + x2^2 + y2^2 - 1) sage: S(x1^2+y1^2-1-d*x1^2*y1^2) 0 sage: x3=(x1*y2+x2*y1)/(1+d*x1*x2*y1*y2) sage: y3=(y1*y2-x1*x2)/(1-d*x1*x2*y1*y2) sage: S(x3^2+y3^2-1-d*x3^2*y3^2) ---------------------------------------------- ----------------------------- Trac eback (most recent call last) /home/showsage/ in () /home/sage/sage-2.8.13/local/lib/python2.5/sit e-packages/sage/rings/quotient_ring.py in __ca ll__(self, x, coerce) 256 if coerce: 257 R = self.cover_ring() --> 258 x = R(x) 259 return quotient_ring_element.Q uotientRingElement(self, x) 260 /home/showsage/multi_polynomial_libsingular.py x in sage.rings.polynomial.multi_polynomial_li bsingular.MPolynomialRing_libsingular.__call__ () /home/sage/sage-2.8.13/local/lib/python2.5/sit e-packages/sage/rings/rational_field.py in __c all__(self, x, base) 180 if isinstance(x, sage.rings.ra tional.Rational): 181 return x --> 182 return sage.rings.rational.Rat ional(x, base) 183 184 def construction(self): /home/showsage/rational.pyx in sage.rings.rati onal.Rational.__init__() /home/showsage/rational.pyx in sage.rings.rati onal.Rational.__set_value() /home/sage/sage-2.8.13/local/lib/python2.5/sit e-packages/sage/rings/fraction_field_element.p y in _rational_(self) 270 Z = integer_ring.IntegerRing() 271 try: --> 272 return Z(self.__numerator) / Z(self.__denominator) 273 except AttributeError: 274 pass /home/showsage/integer_ring.pyx in sage.rings. integer_ring.IntegerRing_class.__call__() : lift() takes ex actly one argument (0 given) sage: x3^2+y3^2-1-d*x3^2*y3^2 (-x1^4*x2^4*y1^4*y2^4*d^4 + x1^4*x2^4*y1^2*y2^ 2*d^2 + x1^2*x2^4*y1^4*y2^2*d^2 + x1^4*x2^2*y1 ^2*y2^4*d^2 + x1^2*x2^2*y1^4*y2^4*d^2 + 2*x1^2 *x2^2*y1^2*y2^2*d^2 - x1^2*x2^4*y1^2*d - x1^4* x2^2*y2^2*d - 4*x1^2*x2^2*y1^2*y2^2*d - x2^2*y 1^4*y2^2*d - x1^2*y1^2*y2^4*d + x1^2*x2^2 + x2 ^2*y1^2 + x1^2*y2^2 + y1^2*y2^2 - 1)/(x1^4*x2^ 4*y1^4*y2^4*d^4 - 2*x1^2*x2^2*y1^2*y2^2*d^2 + 1) sage: numerator(x3^2+y3^2-1-d*x3^2*y3^2) -x1^4*x2^4*y1^4*y2^4*d^4 + x1^4*x2^4*y1^2*y2^2 *d^2 + x1^2*x2^4*y1^4*y2^2*d^2 + x1^4*x2^2*y1^ 2*y2^4*d^2 + x1^2*x2^2*y1^4*y2^4*d^2 + 2*x1^2* x2^2*y1^2*y2^2*d^2 - x1^2*x2^4*y1^2*d - x1^4*x 2^2*y2^2*d - 4*x1^2*x2^2*y1^2*y2^2*d - x2^2*y1 ^4*y2^2*d - x1^2*y1^2*y2^4*d + x1^2*x2^2 + x2^ 2*y1^2 + x1^2*y2^2 + y1^2*y2^2 - 1 sage: S(numerator(x3^2+y3^2-1-d*x3^2*y3^2)) 0 sage: x3strange = (x1*y1+x2*y2)/(x1*x2+y1*y2) sage: y3strange = (x1*y1-x2*y2)/(x1*y2-y1*x2) sage: S(numerator(x3strange^2+y3strange^2-1-d* x3strange^2*y3strange^2)) 0 sage: x3strange-x3 (x1^2*x2*y1^2*y2*d + x1*x2^2*y1*y2^2*d - x1*x2 ^2*y1 - x1^2*x2*y2 - x2*y1^2*y2 - x1*y1*y2^2 + x1*y1 + x2*y2)/(x1^2*x2^2*y1*y2*d + x1*x2*y1^ 2*y2^2*d + x1*x2 + y1*y2) sage: S(numerator(x3strange-x3)) 0 sage: S(numerator(y3strange-y3)) 0 sage: S(numerator(y3strange-y3)) == 0 True sage: S(numerator(y3strange-x3)) == 0 False sage: