Macaulay2 » Documentation
Packages » Seminormalization :: ringProduct
next | previous | forward | backward | up | index | toc

ringProduct -- compute the product of a list of rings

Synopsis

Description

Given a list of rings, of finite type over the same coefficient ring, this computes a ring isomorphic to a product of the rings. It returns a list with three entries. First is the ring. Second is the list of orthogonal idempotents. Finally, it lists where the variables of each of the rings in the list go in the new ring.

i1 : R = QQ[a];
i2 : S = QQ[b];
i3 : T = QQ[c];
i4 : L = ringProduct({R,S})

                     QQ[aRE0RE0, e0, bRE1RE1, e1]
o4 = {---------------------------------------------------------,
                      2
      (e0 + e1 - 1, e1  - e1, bRE1RE1*e1 - bRE1RE1, aRE0RE0*e1)
     ------------------------------------------------------------------------
     MutableList{...2...}, {{aRE0RE0}, {bRE1RE1}}}

o4 : List
i5 : ringProduct({R,S,T})

                                           QQ[aRE0RE0, e0, bRE1RE1, e1, cRE2R
o5 = {-----------------------------------------------------------------------
                           2                                      2
      (e0 + e1 + e2 - 1, e2  - e2, cRE2RE2*e2 - cRE2RE2, e1*e2, e1  - e1, bRE
     ------------------------------------------------------------------------
     E2, e2]
     -------------------------------------------, MutableList{...3...},

     1RE1*e1 - bRE1RE1, aRE0RE0*e1 + aRE0RE0*e2)
     ------------------------------------------------------------------------
     {{aRE0RE0}, {bRE1RE1}, {cRE2RE2}}}

o5 : List

The third entry in the list correspond to the elements $(x,0)$ and $(0,y)$ in the product of rings.

i6 : R = QQ[x];
i7 : S = QQ[y,z];
i8 : L = ringProduct({R,S});
i9 : newx = L#2#0#0;
i10 : newy = L#2#1#0;
i11 : newz = L#2#1#1;
i12 : newx*newy==0

o12 = true
i13 : newx*newz==0

o13 = true
i14 : newy*newz==0

o14 = false

Ways to use ringProduct:

For the programmer

The object ringProduct is a method function with options.