# liftUp -- Lifts various objects over R_P to R.

## Synopsis

• Usage:
I = liftUp IP
M = liftUp(MP, R)
• Inputs:
• MP, , a matrix, module, or ideal over a local ring RP
• R, a ring, a ring, RP is a localization of R
• Outputs:
• M, , a matrix, module, or ideal over the ring R

## 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.

• pruneComplex -- Prunes a chain complex or list of mutable matrices

## Ways to use liftUp :

• "liftUp(Ideal,Ring)"
• "liftUp(Matrix,Ring)"
• "liftUp(Module,Ring)"
• "liftUp(MutableMatrix,Ring)"
• "liftUp(RingElement,Ring)"
• "liftUp(Thing)"

## For the programmer

The object liftUp is .