next | previous | forward | backward | up | top | index | toc | Macaulay2 website
ExactCouples :: restackModule

restackModule -- restacks the ring that acts on a module

Synopsis

Description

Sometimes a module has multiple ways of being considered as a diagram. For example, set

$A = \QQ[a]/a^2$

$B = \QQ[b]/b^2$

$AB = A[b]/b^2$

$BA = B[a]/a^2$.

An $AB$-modules is then the same as a cochain complex of $A$-modules where the differential is named "b". It may be useful to recast this data as a cochain complex of $B$-modules with differential "a". This is certainly possible because the rings $AB$ and $BA$ are isomorphic. In fact, the isomorphism $\phi$ between these rings can be computed with restackRing, and the present function is then computed by

tensorFlat(phi, M)

For example, suppose we have an exact couple of $\QQ[x,y,z]$-modules, and we wish to evaluate it in degree $0$ to obtain an exact couple of $\QQ$-modules. Let's build an example couple

i1 : R = QQ[x,y,z];
i2 : p = y^2*z-x^3+17*z^3;
i3 : filt = {module ideal(p^2), module ideal(p), R^1};
i4 : k = max({0} | apply(filt,regularity));
i5 : W = module ideal(x^k,y^k,z^k);
i6 : couple = prune covariantExtCouple(W, filt)
warning: clearing value of symbol f to allow access to subscripted variables based on it
       : debug with expression   debug 3406   or with command line option   --debug 3406

o6 = cokernel {3, 5, -18} | e_1^2 e_1f_1 x3-y2z-17z3 0     (x3-y2z-17z3)e_1 0           0     0                z6 y6 x6 0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   0     0      0           0     0                0           0     0                |
              {3, 3, -15} | 0     0      f_1         e_1^2 0                x3-y2z-17z3 0     (x3-y2z-17z3)e_1 0  0  0  -x3y2-y4z+34x3z2+17y2z3+578z5 z6 y6 x6 0   0                             0  0  0  0           0   -x3z4-y2z5 0                0           0  0   0   0          0                0   0  0   0   0   0     0      0           0     0                0           0     0                |
              {3, 1, -12} | 0     0      0           0     0                f_1         e_1^2 0                0  0  0  0                             0  0  0  0   -x3y2-y4z+34x3z2+17y2z3+578z5 z6 y6 x6 0           0   0          0                0           0  0   0   -x3z4-y2z5 0                0   0  0   0   0   0     0      0           0     0                0           0     0                |
              {2, 4, -10} | 0     0      0           0     0                0           0     0                0  0  0  e_1                           0  0  0  f_1 0                             0  0  0  x3-y2z-17z3 0   0          y4+34y2z2+1156z4 0           0  -z4 0   0          0                -z5 0  0   0   0   0     0      0           0     0                0           0     0                |
              {2, 2, -7}  | 0     0      0           0     0                0           0     0                0  0  0  0                             0  0  0  0   e_1                           0  0  0  0           f_1 0          0                x3-y2z-17z3 0  0   0   0          y4+34y2z2+1156z4 0   0  -z4 0   -z5 0     0      0           0     0                0           0     0                |
              {2, 4, -8}  | 0     0      0           0     0                0           0     0                0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   e_1        0                0           z2 y2  f_1 0          0                x3  0  0   0   0   0     0      0           0     0                0           0     0                |
              {2, 2, -5}  | 0     0      0           0     0                0           0     0                0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   e_1        0                0   z2 y2  f_1 x3  0     0      0           0     0                0           0     0                |
              {-1, 5, 0}  | 0     0      0           0     0                0           0     0                0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   e_1^2 e_1f_1 x3-y2z-17z3 0     (x3-y2z-17z3)e_1 0           0     0                |
              {-1, 3, 3}  | 0     0      0           0     0                0           0     0                0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   0     0      f_1         e_1^2 0                x3-y2z-17z3 0     (x3-y2z-17z3)e_1 |
              {-1, 1, 6}  | 0     0      0           0     0                0           0     0                0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   0     0      0           0     0                f_1         e_1^2 0                |

                                              10
o6 : R[e , f ]-module, quotient of (R[e , f ])
        1   1                          1   1

We wish to evaluate this couple in $(x,y,z)$-degree 0, obtaining another couple. However, the function evaluateInDegree always eliminates the outermost level of the acting ring. So in this case, we can evaluate at an external bidegree of (ring couple). This will return one of the constituent modules of the couple. For example, the page entry $E_1^{1,2}$ may be computed

i7 : prune evaluateInDegree(2*{1,2},couple)

o7 = cokernel {-10} | x3-y2z-17z3 0  z4  y4+34y2z2 0      |
              {-8}  | 0           z2 -y2 1156y2    x3-y2z |

                            2
o7 : R-module, quotient of R

but this is not the sort of evaluation we want.

In order to evaluate in $(x,y,z)$-degree 0, we must restack the module so that these variables are external and the couple variables are internal.

i8 : coupleRestacked = restackModule({2,1},couple)
warning: clearing value of symbol e to allow access to subscripted variables based on it
       : debug with expression   debug 3903   or with command line option   --debug 3903
warning: clearing value of symbol f to allow access to subscripted variables based on it
       : debug with expression   debug 3406   or with command line option   --debug 3406

o8 = cokernel {-18, 3, 5} | e_1^2 e_1f_1 x3-y2z-17z3 0     e_1x3-e_1y2z-17e_1z3 0           0     0                    z6 y6 x6 0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   0     0      0           0     0                    0           0     0                    |
              {-15, 3, 3} | 0     0      f_1         e_1^2 0                    x3-y2z-17z3 0     e_1x3-e_1y2z-17e_1z3 0  0  0  -x3y2-y4z+34x3z2+17y2z3+578z5 z6 y6 x6 0   0                             0  0  0  0           0   -x3z4-y2z5 0                0           0  0   0   0          0                0   0  0   0   0   0     0      0           0     0                    0           0     0                    |
              {-12, 3, 1} | 0     0      0           0     0                    f_1         e_1^2 0                    0  0  0  0                             0  0  0  0   -x3y2-y4z+34x3z2+17y2z3+578z5 z6 y6 x6 0           0   0          0                0           0  0   0   -x3z4-y2z5 0                0   0  0   0   0   0     0      0           0     0                    0           0     0                    |
              {-10, 2, 4} | 0     0      0           0     0                    0           0     0                    0  0  0  e_1                           0  0  0  f_1 0                             0  0  0  x3-y2z-17z3 0   0          y4+34y2z2+1156z4 0           0  -z4 0   0          0                -z5 0  0   0   0   0     0      0           0     0                    0           0     0                    |
              {-7, 2, 2}  | 0     0      0           0     0                    0           0     0                    0  0  0  0                             0  0  0  0   e_1                           0  0  0  0           f_1 0          0                x3-y2z-17z3 0  0   0   0          y4+34y2z2+1156z4 0   0  -z4 0   -z5 0     0      0           0     0                    0           0     0                    |
              {-8, 2, 4}  | 0     0      0           0     0                    0           0     0                    0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   e_1        0                0           z2 y2  f_1 0          0                x3  0  0   0   0   0     0      0           0     0                    0           0     0                    |
              {-5, 2, 2}  | 0     0      0           0     0                    0           0     0                    0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   e_1        0                0   z2 y2  f_1 x3  0     0      0           0     0                    0           0     0                    |
              {0, -1, 5}  | 0     0      0           0     0                    0           0     0                    0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   e_1^2 e_1f_1 x3-y2z-17z3 0     e_1x3-e_1y2z-17e_1z3 0           0     0                    |
              {3, -1, 3}  | 0     0      0           0     0                    0           0     0                    0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   0     0      f_1         e_1^2 0                    x3-y2z-17z3 0     e_1x3-e_1y2z-17e_1z3 |
              {6, -1, 1}  | 0     0      0           0     0                    0           0     0                    0  0  0  0                             0  0  0  0   0                             0  0  0  0           0   0          0                0           0  0   0   0          0                0   0  0   0   0   0     0      0           0     0                    f_1         e_1^2 0                    |

                                                                  10
o8 : QQ[e , f ][x, y, z]-module, quotient of (QQ[e , f ][x, y, z])
         1   1                                    1   1

Now we may evaluate in degree zero with the desired effect.

i9 : coupleEvaluated = prune evaluateInDegree({0}, coupleRestacked)

o9 = cokernel {3, 1}  | 0     0      0   0   0   0   0   0   0   0   0   e_1^2 0     0     0     f_1 0     0     0     0     0     0     0   0     |
              {2, 2}  | 0     0      f_1 0   0   0   0   0   0   0   0   0     e_1^3 0     0     0   0     0     0     0     0     0     0   0     |
              {2, 2}  | 0     0      0   f_1 0   0   0   0   0   0   0   0     0     e_1^3 0     0   0     0     0     0     0     0     0   0     |
              {2, 2}  | 0     0      0   0   f_1 0   0   0   0   0   0   0     0     0     e_1^3 0   0     0     0     0     0     0     0   0     |
              {2, 4}  | 0     0      0   0   0   0   0   0   0   0   0   0     0     0     0     e_1 0     0     0     0     0     0     f_1 e_1^2 |
              {2, 2}  | 0     0      0   0   0   f_1 0   0   0   0   0   0     0     0     0     0   e_1^3 0     0     0     0     0     0   0     |
              {2, 2}  | 0     0      0   0   0   0   f_1 0   0   0   0   0     0     0     0     0   0     e_1^3 0     0     0     0     0   0     |
              {2, 2}  | 0     0      0   0   0   0   0   f_1 0   0   0   0     0     0     0     0   0     0     e_1^3 0     0     0     0   0     |
              {2, 2}  | 0     0      0   0   0   0   0   0   f_1 0   0   0     0     0     0     0   0     0     0     e_1^3 0     0     0   0     |
              {2, 2}  | 0     0      0   0   0   0   0   0   0   f_1 0   0     0     0     0     0   0     0     0     0     e_1^3 0     0   0     |
              {2, 2}  | 0     0      0   0   0   0   0   0   0   0   f_1 0     0     0     0     0   0     0     0     0     0     e_1^3 0   0     |
              {-1, 5} | e_1^2 e_1f_1 0   0   0   0   0   0   0   0   0   0     0     0     0     0   0     0     0     0     0     0     0   0     |

                                                12
o9 : QQ[e , f ]-module, quotient of (QQ[e , f ])
         1   1                           1   1

From here, we easily view the spectral sequence, if we like

i10 : plotPages((-1..3,-1..3,1..3), prune @@ evaluateInDegree, coupleEvaluated)
page 1, with differential of degree {1, -1}:
+----++----+---+---+----+---+
|q=3 ||0   |0  |0  |0   |0  |
+----++----+---+---+----+---+
|    ||    |  1|  1|    |   |
|q=2 ||0   |QQ |QQ |0   |0  |
+----++----+---+---+----+---+
|    ||    |   |  9|    |   |
|q=1 ||0   |0  |QQ |0   |0  |
+----++----+---+---+----+---+
|    ||    |   |   |  10|   |
|q=0 ||0   |0  |0  |QQ  |0  |
+----++----+---+---+----+---+
|q=-1||0   |0  |0  |0   |0  |
+----++----+---+---+----+---+
|    ||p=-1|p=0|p=1|p=2 |p=3|
+----++----+---+---+----+---+

page 2, with differential of degree {1, -2}:
+----++----+---+---+---+---+
|q=3 ||0   |0  |0  |0  |0  |
+----++----+---+---+---+---+
|    ||    |  1|  1|   |   |
|q=2 ||0   |QQ |QQ |0  |0  |
+----++----+---+---+---+---+
|q=1 ||0   |0  |0  |0  |0  |
+----++----+---+---+---+---+
|    ||    |   |   |  1|   |
|q=0 ||0   |0  |0  |QQ |0  |
+----++----+---+---+---+---+
|q=-1||0   |0  |0  |0  |0  |
+----++----+---+---+---+---+
|    ||p=-1|p=0|p=1|p=2|p=3|
+----++----+---+---+---+---+

page 3, with differential of degree {1, -3}:
+----++----+---+---+---+---+
|q=3 ||0   |0  |0  |0  |0  |
+----++----+---+---+---+---+
|    ||    |  1|   |   |   |
|q=2 ||0   |QQ |0  |0  |0  |
+----++----+---+---+---+---+
|q=1 ||0   |0  |0  |0  |0  |
+----++----+---+---+---+---+
|q=0 ||0   |0  |0  |0  |0  |
+----++----+---+---+---+---+
|q=-1||0   |0  |0  |0  |0  |
+----++----+---+---+---+---+
|    ||p=-1|p=0|p=1|p=2|p=3|
+----++----+---+---+---+---+

Caveat

The ring of M must be restackable: each level may only introduce relations among the most-recent variables.

See also

Ways to use restackModule:

For the programmer

The object restackModule is a method function.