[sage-support] Some bugs and some wishes
Hi there, here are some bugs which may or may not be already known. If they are new, could you please file them wherever such bugs need to be filed? Or if they are not bugs but wrong usage, could you explain to me what I should type instead? I am still working with version 4.7.1, so some remarks might be obsolete already. (Sorry about that.) 1. When I have rational functions over a field [or over an integral domain], I expect that the denominator is made monic [or the content of numerator and denominator coprime]. This is not always happening. For example: sage: R.x = QQ[] sage: (2*x+4)/(4*x-8) (2*x + 4)/(4*x - 8) # bad sage: R.x = ZZ[] sage: (2*x+4)/(4*x-8) (x + 2)/(2*x - 4) # good Although mathematically correct, I consider this as a bug, because not bringing rational functions to normal form can easily lead to ridiculous expression swell. For example: sage: R1.x = QQ[] sage: R2.y = R1.fraction_field()[] sage: K = R2.fraction_field() sage: def canonic(rat): num, den = rat.numerator(), rat.denominator() clear = lcm(num.denominator(), den.denominator()) num, den = num*clear, den*clear clear = map(lambda p: p.numerator().coeffs(), \ num.coeffs() + den.coeffs()) clear = lcm([a.denominator() for b in clear for a in b]) num, den = num*clear, den*clear x = rat.parent().gen() t = rat.parent().base_ring().gen() return rat.parent()(ZZ[t,x](num)/ZZ[t,x](den)) sage: d = K.random_element().derivative(y).derivative(x); sage: len(str(d)) 919274 sage: len(str(canonic(d))) 8371 2. A coercion problem? sage: K = QQ[x].fraction_field() sage: R.y = K[] sage: S = QuotientRing(R, R.ideal(y^2-(x^2+1))) sage: ybar = S.gen() sage: S(y) # works ybar sage: 1/ybar # works (-1/(-x^2 - 1))*ybar sage: S(1/y) # doesn't work *** output flushed *** TypeError: denominator must be a unit 3. Another coercion problem? sage: R0 = QQ['t'].fraction_field(); t = R0.gen() sage: R1 = R0['x'].fraction_field(); x = R1.gen() sage: R2 = R1['y']; y = R2.gen() sage: R = QuotientRing(R2, R2.ideal(y^2-(x+t))) sage: ybar = R.gen() sage: ybar^2 # works x + t sage: ybar + x # works ybar + x sage: ybar * x # doesn't work *** output flushed *** NotImplementedError: sage: ybar*R(x) # works x*ybar 4. A bug in LCM: sage: u = QQ['u'].gen(); v = QQ[u].fraction_field()['v'].gen() sage: pol = ((u^2 - u - 1)/(-1/5*u^2 - u - 1))*v^2 + ((4/9*u^2 - 1/2)/(1/2*u - 2))*v + (2*u^2 - 1/2*u - 1/3)/(-2*u^2 - 5*u - 1/2) sage: lcm(pol, 1) *** output flushed *** TypeError: denominator must be a unit 5. The universe of a factorization cannot be changed if the factorization happens to be empty. sage: factor(2).base_change(ZZ['t','x']).universe() Multivariate Polynomial Ring in t, x over Integer Ring # correct sage: factor(1).base_change(ZZ['t','x']).universe() Integer Ring # incorrect 6. Resultants for elements of Quot(ZZ[t])[x,y] crash. sage: K = ZZ['t'].fraction_field(); t = K.gen() sage: R = K['x', 'y']; x,y = R.gens() sage: R.random_element().resultant(R.random_element(), y) *** Output flushed *** TypeError: denominator must be a unit 7. Nullspace for matrices over finite fields is unreasonably slow sage: M = MatrixSpace(GF(2^31-1), 1000, 1001).random_element(); sage: %time M.right_kernel(); CPU times: user 165.71 s, sys: 0.01 s, total: 165.73 s Wall time: 166.20 s Mathematica does this almost 20 times as fast: In[5]:= mat = Table[RandomInteger[{0,2^31-1}], {n,0,1000},{k,0,1001}]; In[6]:= Timing[NullSpace[mat, Modulus - 2^31-1];] Out[6]= {8.98856, Null} And here is a wish list of some things that I would find convenient to have, but didn't find. 1. a method .derivative for quotient ring elements, with which algebraic functions can be differentiated. 2. a method Factorization.square_free_part 3. a possibility to specify a variable in the method .minpoly for quotient ring elements. It is confusing that this method takes 'x' as variable for the minimal polynomial even if there is already an 'x' in the ground field. Thanks best regards, Manuel -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support] Re: Modular operation in multivariate polynomials
Hi Oleksandr, On 16 Feb., 14:09, Oleksandr Kazymyrov vrona.aka.ham...@gmail.com wrote: I expect that the degree of the polynomial will be less than 2^bits=8. Why do you expect this? There is a difference between a polynomial (i.e., an element of a polynomial ring) and a polynomial function. Polynomials can be of arbitrary degree, over any coefficient field. Over a finite field, it is just normal that a polynomial constantly evaluates as zero, but is not zero: sage: P.x,y = GF(3)[] sage: p = x^3 - x + y^3 - y sage: p.degree() 3 sage: p == 0 False sage: [p(x=a,y=b) for a,b in cartesian_product_iterator([list(GF(3)), list(GF(3))])] [0, 0, 0, 0, 0, 0, 0, 0, 0] Sorry if I misunderstood the problem. Best regards, Simon -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support]
Hi all, I have used the function E,N1=M2.hermite_form(transformation=True) to compute the Hermite Normal Form and observed that it is very slow. Is there any better function? -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
Re: [sage-support]
On Thu, Feb 16, 2012 at 9:23 AM, Santanu Sarkar sarkar.santanu@gmail.com wrote: Hi all, I have used the function E,N1=M2.hermite_form(transformation=True) to compute the Hermite Normal Form and observed that it is very slow. Is there any better function? What is M2? -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
Re: [sage-support]
M2 is a (50, 50) matrix. Its entries are large (2048 bit). On 16 February 2012 09:32, William Stein wst...@gmail.com wrote: On Thu, Feb 16, 2012 at 9:23 AM, Santanu Sarkar sarkar.santanu@gmail.com wrote: Hi all, I have used the function E,N1=M2.hermite_form(transformation=True) to compute the Hermite Normal Form and observed that it is very slow. Is there any better function? What is M2? -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support] Re: SAGE CPLEX
In gmane.comp.mathematics.sage.support, you wrote: Hi Nathan, Yes, I checked local/include and local/lib. CPLEX runs fine also as a 64 bit standalone. I recompiled everything with ./sage -ba, and now MixedIntegerLinearProgram(solver=CPLEX) triggers a new error message it might be a good test for compatibility if you fire up sage's python (i.e. start sage -sh and run python within this shell)) and test CPLEX's own Python interface. (you'd need to run python setup.py at an appropriate place to install the CPLEX's python interface) Please report here on how this went. Thanks, Dmitrii -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support] Re:
In gmane.comp.mathematics.sage.support, you wrote: M2 is a (50, 50) matrix. Its entries are large (2048 bit). did you try 'algorithm=padic' option, as suggested in the manual for such a case (small matrix, large entrie)? -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
Re: [sage-support]
On Thu, Feb 16, 2012 at 9:53 AM, Santanu Sarkar sarkar.santanu@gmail.com wrote: M2 is a (50, 50) matrix. Its entries are large (2048 bit). On 16 February 2012 09:32, William Stein wst...@gmail.com wrote: On Thu, Feb 16, 2012 at 9:23 AM, Santanu Sarkar sarkar.santanu@gmail.com wrote: Hi all, I have used the function E,N1=M2.hermite_form(transformation=True) to compute the Hermite Normal Form and observed that it is very slow. Is there any better function? By very slow, do you mean very slow compared to insert other math software? William What is M2? -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
Re: [sage-support]
No, that I do not know. I run my code half an hour. But still donot get result. On 16/02/2012, William Stein wst...@gmail.com wrote: On Thu, Feb 16, 2012 at 9:53 AM, Santanu Sarkar sarkar.santanu@gmail.com wrote: M2 is a (50, 50) matrix. Its entries are large (2048 bit). On 16 February 2012 09:32, William Stein wst...@gmail.com wrote: On Thu, Feb 16, 2012 at 9:23 AM, Santanu Sarkar sarkar.santanu@gmail.com wrote: Hi all, I have used the function E,N1=M2.hermite_form(transformation=True) to compute the Hermite Normal Form and observed that it is very slow. Is there any better function? By very slow, do you mean very slow compared to insert other math software? William What is M2? -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- William Stein Professor of Mathematics University of Washington http://wstein.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support] Re: Modular operation in multivariate polynomials
Dear Simon, There is a difference between a polynomial (i.e., an element of a polynomial ring) and a polynomial function. Polynomials can be of arbitrary degree, over any coefficient field. Yes I know this. But I think there is no difference between defining of PolynomialRing and PolynomialQuotientRing, assuming that you independently perform the operation by modulus. I am forcing the call of a function pol.mod(P(y^8+y)) to obtain the remainder by modulus. And I expect that monomial y^10*a2*b1^10*p5^2 will has degree 3 (y^3*a2*b1^10*p5^2) after operation pol.mod(P(y^8+y)) in the polynomial. KInd regards, Oleksandr -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support] Sage 4.8 notebook/server error on OSX and Linux
Hi, I have just tried to move on to v4.8 and I have encountered an error, on both precompiled binaries for OSX 10.6 64bit (running on OSX 10.6.8) and on OpenSuse Linux 64bit (where Sage was compiled from sources, which went OK). The error is as following: on any worksheet, if a click evaluate under a cell, the web browser sends the request to the server, and it waits for it, but it never receives one. Instead Sage outputs the same error several times (appended in the end). If I save close and then reopen the worksheet I now see the result of evaluate under that cell which tells me the issue is in server's response to requests. Sage error output (identical on pre-build binaries for OSX and on compiled from source sage on Suse Linux), repeated several times for one request: 2012-02-17 00:45:11+0200 [HTTPChannel,13,127.0.0.1] Exception rendering: 2012-02-17 00:45:11+0200 [HTTPChannel,13,127.0.0.1] Unhandled Error Traceback (most recent call last): File /data/sys/bin/sagemath.org/sage-4.8/local/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg/twisted/internet/defer.py, line 625, in gotResult _deferGenerator(g, deferred) File /data/sys/bin/sagemath.org/sage-4.8/local/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg/twisted/internet/defer.py, line 602, in _deferGenerator deferred.callback(result) File /data/sys/bin/sagemath.org/sage-4.8/local/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg/twisted/internet/defer.py, line 238, in callback self._startRunCallbacks(result) File /data/sys/bin/sagemath.org/sage-4.8/local/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg/twisted/internet/defer.py, line 307, in _startRunCallbacks self._runCallbacks() --- exception caught here --- File /data/sys/bin/sagemath.org/sage-4.8/local/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg/twisted/internet/defer.py, line 323, in _runCallbacks self.result = callback(self.result, *args, **kw) File /data/sys/bin/sagemath.org/sage-4.8/local/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg/twisted/web2/resource.py, line 230, in lambda ).addCallback(lambda res: self.render(request)) File /data/sys/bin/sagemath.org/sage-4.8/devel/sagenb/sagenb/notebook/twist.py, line 1244, in render notebook.add_to_user_history(H, self.username) File /data/sys/bin/sagemath.org/sage-4.8/devel/sagenb/sagenb/notebook/notebook.py, line 956, in add_to_user_history history = self.user_history(username) File /data/sys/bin/sagemath.org/sage-4.8/devel/sagenb/sagenb/notebook/notebook.py, line 938, in user_history for hunk in self.__storage.load_user_history(username): File /data/sys/bin/sagemath.org/sage-4.8/devel/sagenb/sagenb/storage/filesystem_storage.py, line 251, in load_user_history return self._load(filename) File /data/sys/bin/sagemath.org/sage-4.8/devel/sagenb/sagenb/storage/filesystem_storage.py, line 134, in _load return cPickle.load(open(self._abspath(filename))) exceptions.EOFError: Thank you. -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support] Re: Sage 4.8 notebook/server error on OSX and Linux
As usually, one tries to find the error source several hours and then, after asking for help, one finds it in minutes. The problem was notebooks files got corrupted after a power outage. I've moved the directory to a backup location, recreated it by running Sage and then copied the old files from admin/ directory. All is OK with an empty notebook folder. I'll search the user history to see if I can eliminate the error source. Topic closed. -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
[sage-support] Re: Modular operation in multivariate polynomials
Hi Oleksandr, On 16 Feb., 17:58, Oleksandr Kazymyrov vrona.aka.ham...@gmail.com wrote: I am forcing the call of a function pol.mod(P(y^8+y)) to obtain the remainder by modulus. Sorry, I had missed that (the example was quite long, and thus I had the impression that you had merely constructed a polynomial over a finite field, but no modulus except the modulus of the finite field). And I expect that monomial y^10*a2*b1^10*p5^2 will has degree 3 (y^3*a2*b1^10*p5^2) after operation pol.mod(P(y^8+y)) in the polynomial. Right. That sounds like a bug to me. Starting with your definitions, it seems to me that the bug is in libSingular (which is used for polynomial arithmetic in Sage), whereas Singular itself computes it correctly: sage: polS = singular(pol) sage: IS = singular(I) sage: singular(NF(%s,std(%s))%(polS.name(), IS.name())) y^7*a2*b1^14*p7^2+y^7*a2*b2^14*p7^2+y^6*a2*b0^8*b1^6*p7^2+y^6*a2*b1^8*b2^6*p7^2+y^6*a2*b0^2*b1^4*b2^8*p7^2+y^6*a2*b0^4*b2^10*p7^2+y^5*a2*b0^2*b1^12*p7^2+y^5*a2*b0^4*b1^8*b2^2*p7^2+y^5*a2*b0^8*b2^6*p7^2+y^5*a2*b1^2*b2^12*p7^2+y^6*a2*b1^4*b2^8*p6^2+y^4*a2*b0^10*b1^4*p7^2+y^4*a2*b0^12*b2^2*p7^2+y^4*a2*b1^10*b2^4*p7^2+y^4*a2*b0^4*b1^2*b2^8*p7^2+y^5*a2*b1^12*p6^2+y^3*a2*b0^4*b1^10*p7^2+y^3*a2*b0^8*b1^2*b2^4*p7^2+y^3*a2*b1^4*b2^10*p7^2+y^3*a2*b0^2*b2^12*p7^2+y^6*a2*b2^10*p5^2+y^4*a2*b0^8*b1^4*p6^2+y^2*a2*b0^12*b1^2*p7^2+y^2*a2*b1^12*b2^2*p7^2+y^2*a2*b0^2*b1^8*b2^4*p7^2+y^2*a2*b0^6*b2^8*p7^2+y^5*a2*b1^8*b2^2*p5^2+y^3*a2*b2^12*p6^2+y*a2*b0^6*b1^8*p7^2+y*a2*b0^8*b1^4*b2^2*p7^2+y*a2*b0^10*b2^4*p7^2+y*a2*b1^6*b2^8*p7^2+y^4*a2*b0^8*b2^2*p5^2+y^4*a2*b1^2*b2^8*p5^2+y^2*a2*b1^8*b2^4*p6^2+y^2*a2*b0^4*b2^8*p6^2+a2*b0^14*p7^2+y^3*a2*b1^10*p5^2+y*a2*b0^4*b1^8*p6^2+y*a2*b0^8*b2^4*p6^2+y^7*a1*b1^7*p7+y^7*a1*b2^7*p7+y^6*a2*b1^6*p3^2+y^2*a2*b0^8*b1^2*p5^2+y^2*a2*b0^2*b2^8*p5^2+a2*b0^12*p6^2+y^6*a1*b0*b1^6*p7+y^6*a1*b0^2*b1^4*b2*p7+y^6*a1*b0^4*b2^3*p7+y^6*a1*b1*b2^6*p7+y^5*a2*b2^6*p3^2+y*a2*b0^2*b1^8*p5^2+y^6*a1*b1^6*p6+y^5*a1*b0^2*b1^5*p7+y^5*a1*b0^4*b1*b2^2*p7+y^5*a1*b1^2*b2^5*p7+y^5*a1*b0*b2^6*p7+y^4*a2*b0^2*b1^4*p3^2+y^4*a2*b0^4*b2^2*p3^2+y^2*a2*b2^8*p4^2+y^6*a1*b1^4*b2*p5+a2*b0^10*p5^2+y^5*a1*b2^6*p6+y^4*a1*b0^3*b1^4*p7+y^4*a1*b0^4*b1^2*b2*p7+y^4*a1*b0^5*b2^2*p7+y^4*a1*b1^3*b2^4*p7+y^3*a2*b1^2*b2^4*p3^2+y*a2*b1^8*p4^2+y^5*a1*b1^5*p5+y^4*a1*b0^2*b1^4*p6+y^4*a1*b0^4*b2^2*p6+y^3*a1*b0^4*b1^3*p7+y^3*a1*b1^4*b2^3*p7+y^3*a1*b0*b1^2*b2^4*p7+y^3*a1*b0^2*b2^5*p7+y^4*a2*b1^4*p2^2+y^6*a1*b2^3*p3+y^2*a2*b0^4*b1^2*p3^2+a2*b0^8*p4^2+y^4*a1*b0*b1^4*p5+y^3*a1*b1^2*b2^4*p6+y^2*a1*b0^5*b1^2*p7+y^2*a1*b0^6*b2*p7+y^2*a1*b1^5*b2^2*p7+y^2*a1*b0^2*b1*b2^4*p7+y^5*a1*b1*b2^2*p3+y*a2*b1^4*b2^2*p3^2+y*a2*b0^2*b2^4*p3^2+y^4*a1*b1^4*p4+y^3*a1*b2^5*p5+y^2*a1*b0^4*b1^2*p6+y*a1*b0^6*b1*p7+y*a1*b1^6*b2*p7+y*a1*b0*b1^4*b2^2*p7+y*a1*b0^3*b2^4*p7+y^4*a2*b2^2*p1^2+y^4*a1*b1^2*b2*p3+y^4*a1*b0*b2^2*p3+a2*b0^6*p3^2+y^2*a1*b0^4*b2*p5+y^2*a1*b1*b2^4*p5+y*a1*b1^4*b2^2*p6+y*a1*b0^2*b2^4*p6+a1*b0^7*p7+y^4*a1*b2^2*p2+y*a2*b2^4*p2^2+y^3*a1*b1^3*p3+y*a1*b0^4*b1*p5+y*a1*b0*b2^4*p5+a1*b0^6*p6+y^2*a2*b1^2*p1^2+a2*b0^4*p2^2+y^2*a1*b0*b1^2*p3+y^2*a1*b0^2*b2*p3+y*a1*b2^4*p4+a1*b0^5*p5+y^2*a1*b1^2*p2+y*a1*b0^2*b1*p3+a1*b0^4*p4+y^2*a1*b2*p1+a2*b0^2*p1^2+a1*b0^3*p3+y*a1*b1*p1+a1*b0^2*p2+y^2*c2+a2*p0^2+a1*b0*p1+y*c1+a1*p0+a0 sage: pol.reduce(I) y^7*a2*b1^14*p7^2 + y^7*a2*b2^14*p7^2 + y^10*a2*b1^10*p5^2 + y^8*a2*b0^4*b1^8*p6^2 + y^8*a2*b0^8*b2^4*p6^2 + y^14*a1*b2^7*p7 + y^6*a2*b0^8*b1^6*p7^2 + y^6*a2*b1^8*b2^6*p7^2 + y^6*a2*b0^2*b1^4*b2^8*p7^2 + y^6*a2*b0^4*b2^10*p7^2 + y^9*a2*b0^2*b2^8*p5^2 + y^13*a1*b1*b2^6*p7 + y^5*a2*b0^2*b1^12*p7^2 + y^5*a2*b0^4*b1^8*b2^2*p7^2 + y^5*a2*b0^8*b2^6*p7^2 + y^5*a2*b1^2*b2^12*p7^2 + y^12*a2*b2^6*p3^2 + y^8*a2*b0^2*b1^8*p5^2 + y^6*a2*b1^4*b2^8*p6^2 + y^12*a1*b1^2*b2^5*p7 + y^12*a1*b0*b2^6*p7 + y^4*a2*b0^10*b1^4*p7^2 + y^4*a2*b0^12*b2^2*p7^2 + y^4*a2*b1^10*b2^4*p7^2 + y^4*a2*b0^4*b1^2*b2^8*p7^2 + y^9*a2*b2^8*p4^2 + y^12*a1*b2^6*p6 + y^5*a2*b1^12*p6^2 + y^11*a1*b1^3*b2^4*p7 + y^3*a2*b0^4*b1^10*p7^2 + y^3*a2*b0^8*b1^2*b2^4*p7^2 + y^3*a2*b1^4*b2^10*p7^2 + y^3*a2*b0^2*b2^12*p7^2 + y^10*a2*b1^2*b2^4*p3^2 + y^8*a2*b1^8*p4^2 + y^6*a2*b2^10*p5^2 + y^4*a2*b0^8*b1^4*p6^2 + y^10*a1*b1^4*b2^3*p7 + y^10*a1*b0*b1^2*b2^4*p7 + y^10*a1*b0^2*b2^5*p7 + y^2*a2*b0^12*b1^2*p7^2 + y^2*a2*b1^12*b2^2*p7^2 + y^2*a2*b0^2*b1^8*b2^4*p7^2 + y^2*a2*b0^6*b2^8*p7^2 + y^5*a2*b1^8*b2^2*p5^2 + y^10*a1*b1^2*b2^4*p6 + y^3*a2*b2^12*p6^2 + y^9*a1*b1^5*b2^2*p7 + y^9*a1*b0^2*b1*b2^4*p7 + y*a2*b0^6*b1^8*p7^2 + y*a2*b0^8*b1^4*b2^2*p7^2 + y*a2*b0^10*b2^4*p7^2 + y*a2*b1^6*b2^8*p7^2 + y^8*a2*b1^4*b2^2*p3^2 + y^8*a2*b0^2*b2^4*p3^2 + y^10*a1*b2^5*p5 + y^4*a2*b0^8*b2^2*p5^2 + y^4*a2*b1^2*b2^8*p5^2 + y^2*a2*b1^8*b2^4*p6^2 + y^2*a2*b0^4*b2^8*p6^2 + y^8*a1*b1^6*b2*p7 + y^8*a1*b0*b1^4*b2^2*p7 + y^8*a1*b0^3*b2^4*p7 + a2*b0^14*p7^2 + y^9*a1*b1*b2^4*p5 + y^8*a1*b1^4*b2^2*p6 + y^8*a1*b0^2*b2^4*p6 + y^7*a1*b1^7*p7 + y^8*a2*b2^4*p2^2 + y^6*a2*b1^6*p3^2 + y^8*a1*b0*b2^4*p5 + y^2*a2*b0^8*b1^2*p5^2 + a2*b0^12*p6^2 + y^6*a1*b0*b1^6*p7 + y^6*a1*b0^2*b1^4*b2*p7 + y^6*a1*b0^4*b2^3*p7