The only reason that monomial_divides is unimplemented there is that nobody has done it yet. :-) David
On Tue, Mar 1, 2016 at 12:20 PM, Ben Hutz <bn4...@gmail.com> wrote: > ok, so that is what the logic is. > > Not begin familiar with the different polynomial ring classes: is there a > reason not to implement the monomial_divides function in that class? I > think the current function just checks the exponents and it's lack is > preventing the groebner basis from running. > > On Monday, February 29, 2016 at 2:25:45 PM UTC-6, David Roe wrote: >> >> >> >> On Mon, Feb 29, 2016 at 9:19 AM, Ben Hutz <bn4...@gmail.com> wrote: >> >>> I was exploring some quotient ring operations and came across the >>> following: >>> >>> {{{ >>> R.<y>=QQ[] >>> K.<w>=NumberField(y^3 + 2*y - 2401) >>> k.<v>=K.quo(K.prime_factors(7)[1]) >>> R.<x,y>=PolynomialRing(k) >>> R.monomial_divides(y,x^3*y) >>> Error >>> }}} >>> >>> {{{ >>> R.<y>=QQ[] >>> K.<w>=NumberField(y^3 + 2*y - 2401) >>> k.<v>=K.residue_field(K.prime_factors(7)[1]) >>> R.<x,y>=PolynomialRing(k) >>> R.monomial_divides(y,x^3*y) >>> True >>> }}} >>> >>> The second works, the first does not. I came across this since >>> .monomial_divides is used is a groebner basis computation. So played around >>> a little more and the following seems weirder >>> >>> {{{ >>> A.<x,y,z> = PolynomialRing(Zmod(42)) >>> A.monomial_divides(y,x^2*y) >>> True >>> }}} >>> >>> {{{ >>> A.<x,y,z> = PolynomialRing(Zmod(2521515232)) #but one less digit works >>> A.monomial_divides(y,x^2*y) >>> Error >>> }} >>> >>> The first works, but the 2nd does not, even though neither is prime. It >>> seems to have to do with what type of polynomial ring they are initialized >>> as, but I had a hard time tracking down where that code lived and how it >>> decided. Is there someone familiar with polynomial rings in Sage who could >>> shed some light on whether this is expected behavior? >>> >> >> The difference is that we use singular over Z/n for small enough n. You >> can detect this in the types of the polynomial rings: >> >> sage: A.<x,y,z> = PolynomialRing(Zmod(42)) >> sage: type(A) >> <type >> 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomialRing_libsingular'> >> sage: A.<x,y,z> = PolynomialRing(Zmod(2521515232)) >> sage: type(A) >> <class >> 'sage.rings.polynomial.multi_polynomial_ring.MPolynomialRing_polydict_with_category'> >> >> The monomial_divides method just isn't implemented >> for MPolynomialRing_polydict. >> David >> >>> >>> Thanks, >>> Ben >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "sage-devel" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to sage-devel+...@googlegroups.com. >>> To post to this group, send email to sage-...@googlegroups.com. >>> Visit this group at https://groups.google.com/group/sage-devel. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.