Loading [MathJax]/jax/output/HTML-CSS/jax.js
Ask Your Question
1

Tensor Product of Quotient Rings

asked 5 years ago

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!

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
1

answered 5 years ago

rburing gravatar image

updated 5 years ago

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.

Preview: (hide)
link

Comments

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

Bark gravatar imageBark ( 5 years ago )

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: 5 years ago

Seen: 653 times

Last updated: Feb 08 '20