Macaulay2 » Documentation
Packages » LocalRings > LocalRing > liftUp
next | previous | forward | backward | up | index | toc

liftUp -- Lifts various objects over R_P to R.

Synopsis

Description

Given an object, for instance an ideal IP, over a local ring (RP, P), this method returns the preimage of that object under the canonical map R -> RP after clearing denominators of IP.

For matrices (hence most other objects as well), clearing denominators is performed columnwise.

In conjunction with pruneComplex, liftUp is used to implement many of the elementary operations over local rings such as syz.

Here is an example of computing the syzygy over a local ring using liftUp and pruneComplex:

i1 : R = ZZ/32003[vars(0..5)];
i2 : I = ideal"abc-def,ab2-cd2-c,-b3+acd";

o2 : Ideal of R
i3 : C = res I;
i4 : M = ideal gens R;

o4 : Ideal of R
i5 : RM = localRing(R, M);
i6 : F = C.dd_2;

             4      6
o6 : Matrix R  <-- R
i7 : FM = F ** RM

o7 = {3} | 0    0    -b3+acd   -abc+def  0       a2c2-b2ef  |
     {3} | cef  ac2  ab2-cd2-c 0         abc-def -ac2d+abef |
     {3} | -ac2 -b2c 0         ab2-cd2-c -b3+acd -a2bc+b2cd |
     {5} | b    d    0         0         0       1          |

              4       6
o7 : Matrix RM  <-- RM

This is the process for finding the syzygy of FM:

i8 : f = liftUp FM;

             4      6
o8 : Matrix R  <-- R
i9 : g = syz f;

             6      5
o9 : Matrix R  <-- R
i10 : h = syz g;

              5      2
o10 : Matrix R  <-- R
i11 : C = {g ** RM, h ** RM};

Now we prune the map h, which is the first map from the right:

i12 : C = first pruneComplex(C, 1, Direction => "right");
i13 : g' = C#0;

Scale each row with the common denominator of the corresponding column in FM:

i14 : N = transpose entries FM;
i15 : for i from 0 to numcols FM - 1 do
        rowMult(g', i, N_i/denominator//lcm);

The syzygy of FM is:

i16 : GM = map(source FM, , matrix g')

o16 = {6} | -d d2+1 0   |
      {6} | b  -bd  -1  |
      {6} | 0  ef   -ac |
      {6} | 0  -ac  b2  |
      {6} | -c 0    ab  |
      {7} | 0  -b   d   |

               6       3
o16 : Matrix RM  <-- RM
i17 : kernel FM == image GM

o17 = true

Caveat

This is NOT the same as lift. Not tested with quotients properly.

See also

Ways to use liftUp :

For the programmer

The object liftUp is a method function.