Ask Your Question
1

Tensor Product of Quotient Rings

asked 2020-02-07 07:05:04 +0200

Bark gravatar image

I would like to know how to do a tensor product of two quotient rings in Sage. I have the following toy example that I am using to try and understand the concept

    R = PolynomialRing(QQ,2,'x')
    R.inject_variables()
    IR = ideal(x0^2-x1^3)
    QR = QuotientRing(R,IR)

    S = PolynomialRing(QQ,3,'x')
    S.inject_variables()
    IS = ideal(x0*x1-x2^2)
    QS = QuotientRing(R,IS)

Both rings are in the variables labeled by x, but I would like to treat each set of variables as if they are different. Any help would be appreciated!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2020-02-08 13:13:02 +0200

rburing gravatar image

updated 2020-02-08 13:22:12 +0200

The two quotient rings are coordinate rings of affine varieties.

The tensor product of coordinate rings is the coordinate ring of the product variety (under some assumptions).

You can construct it like this:

R.<x0,x1> = PolynomialRing(QQ)
IR = R.ideal(x0^2-x1^3)
QR = R.quotient(IR)

S.<y0,y1,y2> = PolynomialRing(QQ)
JS = S.ideal(y0*y1-y2^2)
QS = S.quotient(JS)

T.<a0,a1,b0,b1,b2> = PolynomialRing(QQ)
R_to_T = R.hom([a0,a1])
S_to_T = S.hom([b0,b1,b2])

IT = R_to_T(IR)
JT = S_to_T(JS)

QT = T.quotient(IT + JT)

QR_to_QT = QR.hom(map(QT,[a0,a1]))
QS_to_QT = QS.hom(map(QT,[b0,b1,b2]))

The object you want is QT, which is a quotient of the polynomial ring T.

There are maps from R and S to T, and induced maps from QR and QS to QT.

I used different names for the generators in R and S, but you can also use the same ones as you did, or e.g.:

R = PolynomialRing(QQ, 'x', 2)
IR = R.ideal(R.0^2-R.1^3)
QR = R.quotient(IR)

S = PolynomialRing(QQ, 'x', 3)
JS = S.ideal(S.0*S.1-S.2^2)
QS = S.quotient(JS)

T = PolynomialRing(QQ, 'z', R.ngens() + S.ngens())
R_to_T = R.hom(T.gens()[0:R.ngens()])
S_to_T = S.hom(T.gens()[R.ngens():R.ngens() + S.ngens()])

IT = R_to_T(IR)
JT = S_to_T(JS)

QT = T.quotient(IT + JT)

QR_to_QT = QR.hom([QT(R_to_T(g)) for g in R.gens()])
QS_to_QT = QS.hom([QT(S_to_T(g)) for g in S.gens()])

Here R.0 is shorthand for R.gen(0), the first generator of R, namely x0; R.ngens() is the number of generators of R; R.gens() is the list of generators of R, etc.

edit flag offensive delete link more

Comments

Thank you! I understand the use of the theorem that $k[X] \otimes k[Y] \simeq k[X \times Y]$, but I wasn't sure if there was a tensor product class, like there is for free modules.

Bark gravatar imageBark ( 2020-02-09 07:10:44 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2020-02-07 07:05:04 +0200

Seen: 479 times

Last updated: Feb 08 '20