Ring of undetermined coefficients

58 views
Skip to first unread message

Martin R

unread,
Jan 18, 2024, 2:51:05 AM1/18/24
to sage-devel
Over at https://github.com/sagemath/sage/pull/37033 I am hitting the following question:

Is it possible to have a ring UndeterminedCoefficientRing(R) which, for every functorial construction F(R) has pushout F(UndeterminedCoefficientRing(R)).

I am not sure whether the phrasing of the question is correct - it reflects my current understanding of the situation.  For example, I'd like to have the following:

sage: R.<a,b,c> = QQ[]
sage: U = UndeterminedCoefficientRing(R)
sage: M = MatrixSpace(R, 2)
sage: m = M.matrix([[a, b], [0, c]])
sage: f = U.an_element(); f
u_1*a
sage: (f*m).parent() == MatrixSpace(U, 2)
True
sage: f*m
[u_1*a^2 u_1*a*b]
[0             u_1*a*c]

# similarly:

sage: s = SymmetricFunctions(R).s()
sage: Q = PolynomialRing(s, ["x", "y"])
sage: Q.inject_variables()
Defining x, y
sage: m = x*s[2,1] + y*s[3] + y*s[1,1,1]; m
(s[2, 1])*x + (s[1, 1, 1] + s[3])*y
sage: f*x + m
(u_1*a + s[2, 1])*x + (s[1, 1, 1] + s[3])*y

I am guessing that, to make this work, `SymmetricFunctions` must become at least a functorial construction.

Help is greatly appreciated,

Martin

PS: to give you an idea where this is heading, the following already works:

            sage: R.<z,q> = LazyPowerSeriesRing(QQ)
            sage: g = R.undefined()
            sage: R.define_implicitly([g], [g - (z*q + z*g*~(1-g))])
            sage: g
            z*q + z^2*q + z^3*q + (z^4*q+z^3*q^2) + (z^5*q+3*z^4*q^2) + O(z,q)^7

but I want, that the following also works - and it doesn't, because of coercion issues:

            sage: R.<x,y,t> = LazyPowerSeriesRing(QQ)
            sage: M1 = R.undefined()
            sage: M2 = R.undefined()
            sage: eq1 = -t*(x - y)*M1(0, 0, t)*x + t*(x - 1)*(x + 1)*(y^2 + 1)*M1(0, y, t) + (t*x^2*y^2 + t*x*y + t*y^2 + t - x*y)*M1(x, y, t) + t*M2(0, 0, t)*x*y + x*y
            sage: eq2 = -t*M1(0, 0, t)*x + t*(x - 1)*(y + 1)*M1(0, y, t) + t*(x*y + y + 1)*M1(x, y, t) - t*M2(0, 0, t)*x + t*(x - 1)*(y^2 + y^2 + y + 1)*M2(0, y, t) + (t*x^2*y^2 + t*x*y^2 + t*x*y + t*y^2 + t*y^2 + t*y + t - x*y)*M2(x, y, t)
            sage: R.define_implicitly([M1, M2], [eq1, eq2])
            sage: M1

Nils Bruin

unread,
Jan 18, 2024, 1:13:25 PM1/18/24
to sage-devel
On Wednesday 17 January 2024 at 23:51:05 UTC-8 Martin R wrote:
Over at https://github.com/sagemath/sage/pull/37033 I am hitting the following question:

Is it possible to have a ring UndeterminedCoefficientRing(R) which, for every functorial construction F(R) has pushout F(UndeterminedCoefficientRing(R)).

I suspect that for QQ['x']['x'] you'll run into trouble.

Also, I'd expect quotient constructions will have trouble commuting with your new functor:

sage: R.<a,b>=QQ[]
sage: I=R.ideal(a^2+b^2-1)
sage: S=R.quo(I)
sage: S.construction()
(QuotientFunctor, Multivariate Polynomial Ring in a, b over Rational Field)

although I don't think that's a fundamental obstruction.

Another obstacle may be noncommutative group rings etc. Or (hinting at what you're describing later on already) when completions have been taken -- i.e., certain variables may occur as power series variables somewhere in the tower.

A best effort attempt probably gives you a ring extension functor such that it has a pushout for many functorial constructions F.
 
Reply all
Reply to author
Forward
0 new messages