next | previous | forward | backward | up | top | index | toc | Macaulay2 website
DGAlgebras :: getBoundaryPreimage

getBoundaryPreimage -- Attempt to find a preimage of a boundary under the differential of a DGAlgebra.

Synopsis

Description

The first element in the return value is a boolean value indicating whether the lift was possible. If true, the second coordinate of the return value is the lift. If false, then the second coordinate of the return value is the reduction of the input modulo the image.

i1 : Q = QQ[x_1,x_2,y_1,y_2,z]

o1 = Q

o1 : PolynomialRing
i2 : I = ideal (x_1*x_2^2,y_1*y_2^2,z^3,x_1*x_2*y_1*y_2,y_2^2*z^2,x_2^2*z^2,x_1*y_1*z,x_2^2*y_2^2*z)

               2     2   3             2 2   2 2          2 2
o2 = ideal (x x , y y , z , x x y y , y z , x z , x y z, x y z)
             1 2   1 2       1 2 1 2   2     2     1 1    2 2

o2 : Ideal of Q
i3 : R = Q/I

o3 = R

o3 : QuotientRing
i4 : KR = koszulComplexDGA R

o4 = {Ring => R                          }
      Underlying algebra => R[T ..T ]
                               1   5
      Differential => {x , x , y , y , z}
                        1   2   1   2

o4 : DGAlgebra

The following are cycles:

i5 : z1 = z^2*T_5

      2
o5 = z T
        5

o5 : R[T ..T ]
        1   5
i6 : z2 = y_2^2*T_3

      2
o6 = y T
      2 3

o6 : R[T ..T ]
        1   5
i7 : z3 = x_2^2*T_1

      2
o7 = x T
      2 1

o7 : R[T ..T ]
        1   5
i8 : {diff(KR,z1),diff(KR,z1),diff(KR,z1)}

o8 = {0, 0, 0}

o8 : List

and z1*z2, z2*z3 vanish in homology:

i9 : (lifted12,lift12) = getBoundaryPreimage(KR,z1*z2)

o9 = (true, 0)

o9 : Sequence
i10 : (lifted23,lift23) = getBoundaryPreimage(KR,z2*z3)

                2
o10 = (true, x y T T T  - x x y T T T )
              2 2 1 2 3    1 2 2 2 3 4

o10 : Sequence

We can check that the differential of the lift is the supposed boundary:

i11 : diff(KR,lift23) == z2*z3

o11 = true

Ways to use getBoundaryPreimage :

For the programmer

The object getBoundaryPreimage is a method function.