2022-01-22 17:11:08 +0100 received badge ● Popular Question (source) 2021-02-05 10:47:59 +0100 received badge ● Famous Question (source) 2020-03-30 16:06:01 +0100 received badge ● Notable Question (source) 2019-07-25 02:14:24 +0100 received badge ● Popular Question (source) 2018-10-23 19:45:34 +0100 received badge ● Nice Question (source) 2018-10-22 23:18:12 +0100 commented answer Reducing the Coefficients of a Polynomial Modulo an Ideal Is there any hope if the ring of coefficients has more than one variable? The application I'm interested in is when the coefficient ring has the form $\mathbf{Z}[a_1, \ldots, a_n]$ and I reduce modulo some power of a maximal ideal of the form $(p, a_1, \ldots, a_n)$ with $p$ a prime. 2018-10-20 02:03:23 +0100 asked a question Valuation error when composing power series I'm trying to work with power series with coefficients in a ring consisting of elements $f/g$, where $f$ is a polynomial in several variables over the integers and g is a polynomial in one of those variables with unit constant coefficient. Ultimately, I'd like to be able to do all of the following: Compose power series over this ring Invert single-variable power series over this ring whose degree-1 coefficients are units Reduce the coefficients of a power series modulo some ideal of the ring I thought I would do this by starting with the Laurent series over $\mathbf{Z}$ in the variable that occurs in the denominator, constructing a polynomial ring over this by adjoining the other variables, and letting my power series take coefficients in this ring. But I'm getting an error I don't understand when I try to compose series. The following example illustrates the problem: M1. = LaurentSeriesRing(ZZ) M. = PolynomialRing(M1) R. = PowerSeriesRing(M) X = t1 + t2 + O(t1,t2)^3 R1. = PowerSeriesRing(M) f = X(t,t^2); f This returns the type error Substitution defined only for elements of positive valuation, unless self has infinite precision despite the fact that replacing the last line by t.valuation() or (t^2).valuation() returns 1 or 2, respectively. The problem seems to result from a combination of factors. If I replace the second line with either M. = PolynomialRing(ZZ) or M. = PolynomialRing(M1) the error vanishes and the code returns the expected t + t^2 + O(t)^3. It also gives no error if I define R and R1 to be polynomial rings, rather than power series rings, over M (and correspondingly delete the big-O notation). Any ideas about what is triggering the error, or another way to construct these power series? 2018-10-19 14:32:20 +0100 received badge ● Nice Question (source) 2018-10-19 03:16:14 +0100 asked a question Reducing the Coefficients of a Polynomial Modulo an Ideal I have a polynomial in two variables $t_1$ and $t_2$ (say $2t_1 + at_2$) defined over a ring which is itself a polynomial ring (say $\mathbf{Z}[a]$). I'd like to reduce the coefficients of the polynomial modulo an ideal of the latter ring (say $(2)$ or $(a)$ or $(2,a)$). When I execute M. = PolynomialRing(ZZ) R. = PolynomialRing(M) m = M.ideal(a) (2*t1 + a*t2).change_ring(QuotientRing(M,m)) I get 2*t1, as I would expect. On the other hand, the code M. = PolynomialRing(ZZ) R. = PolynomialRing(M) m = M.ideal(2) (2*t1 + a*t2).change_ring(QuotientRing(M,m)) gives me a type error ("polynomial must have unit leading coefficient"). And the input M. = PolynomialRing(ZZ) R. = PolynomialRing(M) m = M.ideal(2,a) (2*t1 + a*t2).change_ring(QuotientRing(M,m)) gives the output 2*t1 + abar*t2 rather than the 0 I would have expected. What should I do to get the outputs I would expect (namely 2*t1, abar*t2, and 0, respectively)? 2018-08-03 06:12:16 +0100 received badge ● Supporter (source) 2018-08-03 06:12:14 +0100 received badge ● Scholar (source) 2018-08-01 22:18:06 +0100 received badge ● Nice Question (source) 2018-08-01 17:58:02 +0100 received badge ● Student (source) 2018-08-01 17:14:49 +0100 asked a question Defining a power series with variable coefficients It is not difficult to define a multivariate power series; for example, the following works: R. = PowerSeriesRing(ZZ,3) f = a*x + y + x*y + O(a,x,y)^3 But what I would really like is to treat the series f as a series in x and y, with a acting as a variable coefficient, so that, for example, I could instead write f = a*x + y + x*y + O(x,y)^3. I tried the following: M = PolynomialRing(ZZ,'a') R. = PowerSeriesRing(M,2) f = a*x + y + x*y + O(x,y)^3 f This generates the error "name a is not defined." What can I do to get a into the coefficient ring?