Macaulay2 » Documentation
Packages » MatrixFactorizations :: ZZdFactorizationMap == ZZdFactorizationMap
next | previous | forward | backward | up | index | toc

ZZdFactorizationMap == ZZdFactorizationMap -- whether two ZZ/d-graded factorization maps are equal

Description

Two ZZ/d-graded factorization maps are equal if they have the same source, the same target, and $f_i = g_i$ for all $i$.

i1 : S = ZZ/101[a,b,c];
i2 : R = S/(a^2+b^2+c^2);
i3 : m = ideal vars R

o3 = ideal (a, b, c)

o3 : Ideal of R
i4 : C = tailMF m

      4      4      4
o4 = S  <-- S  <-- S
                    
     0      1      0

o4 : ZZdFactorization
i5 : D = tailMF (m^2)

      8      8      8
o5 = S  <-- S  <-- S
                    
     0      1      0

o5 : ZZdFactorization
i6 : f = id_C

          4                       4
o6 = 0 : S  <------------------- S  : 0
               {3} | 1 0 0 0 |
               {3} | 0 1 0 0 |
               {3} | 0 0 1 0 |
               {3} | 0 0 0 1 |

          4                       4
     1 : S  <------------------- S  : 1
               {4} | 1 0 0 0 |
               {4} | 0 1 0 0 |
               {4} | 0 0 1 0 |
               {4} | 0 0 0 1 |

o6 : ZZdFactorizationMap
i7 : assert(f == 1)
i8 : f === id_C[-1][1]

o8 = false
i9 : f == id_C[-1][1]

o9 = true

A factorization map is equal to zero if all the maps are zero. This could require computation to determine if something that is superficially not zero is in fact zero.

i10 : assert(0 * id_C == 0)
i11 : use S;
i12 : E = koszulMF({a,b,c}, a^3 + b^3 + c^3)

       4      4      4
o12 = S  <-- S  <-- S
                     
      0      1      0

o12 : ZZdFactorization
i13 : g = randomFactorizationMap(E, E)

           4                           4
o13 = 0 : S  <----------------------- S  : 0
                | 24  19  -8  -38 |
                | -36 19  -22 -16 |
                | -30 -10 -29 39  |
                | -29 -29 -24 21  |

           4                           4
      1 : S  <----------------------- S  : 1
                | 34  -18 -28 16  |
                | 19  -13 -47 22  |
                | -47 -43 38  45  |
                | -39 -15 2   -34 |

o13 : ZZdFactorizationMap
i14 : h = inducedMap(coker g, target g)

                                               4
o14 = 0 : cokernel | 24  19  -8  -38 | <----- S  : 0
                   | -36 19  -22 -16 |    0
                   | -30 -10 -29 39  |
                   | -29 -29 -24 21  |

                                               4
      1 : cokernel | 34  -18 -28 16  | <----- S  : 1
                   | 19  -13 -47 22  |    0
                   | -47 -43 38  45  |
                   | -39 -15 2   -34 |

o14 : ZZdFactorizationMap
i15 : assert(prune h == 0)

Testing whether a map is equal to 1 is a shorthand for determining if the complex map is the identity. Although the matrices may appear to be the identity, the map is not the identity when the source and target are not equal.

i16 : g = randomFactorizationMap(C, C, InternalDegree=>1, Cycle=>true)

           4                                                                 4
o16 = 0 : S  <------------------------------------------------------------- S  : 0
                {3} | 8a-17b+36c   26a+36b-45c  8a-24b-39c -19a-50b-30c |
                {3} | 47b+14c      39a-33b-39c  49a-45b-7c 15a+25b-29c  |
                {3} | -21a-23b+17c -11a+42b-24c 42a+5b-11c -48a-11b+48c |
                {3} | 8a-16b-4c    a+49b+2c     2a-43b-47c 43a-6b+35c   |

           4                                                                 4
      1 : S  <------------------------------------------------------------- S  : 1
                {4} | 42a-33b+35c 21a-25b+2c  -11a+45b-4c  -48a-47b+47c |
                {4} | -8a-49b-29c 8a-6b-39c   -26a-43b+14c 19a-16b+7c   |
                {4} | 49a-42b-30c -11b-45c    39a+5b+36c   15a-23b+39c  |
                {4} | 2a-36b-48c  -8a-50b+24c a-24b-17c    43a-17b-11c  |

o16 : ZZdFactorizationMap
i17 : h = inducedMap(coker g, target g)

                                                                                                   4
o17 = 0 : cokernel {3} | 8a-17b+36c   26a+36b-45c  8a-24b-39c -19a-50b-30c | <------------------- S  : 0
                   {3} | 47b+14c      39a-33b-39c  49a-45b-7c 15a+25b-29c  |    {3} | 1 0 0 0 |
                   {3} | -21a-23b+17c -11a+42b-24c 42a+5b-11c -48a-11b+48c |    {3} | 0 1 0 0 |
                   {3} | 8a-16b-4c    a+49b+2c     2a-43b-47c 43a-6b+35c   |    {3} | 0 0 1 0 |
                                                                                {3} | 0 0 0 1 |

                                                                                                   4
      1 : cokernel {4} | 42a-33b+35c 21a-25b+2c  -11a+45b-4c  -48a-47b+47c | <------------------- S  : 1
                   {4} | -8a-49b-29c 8a-6b-39c   -26a-43b+14c 19a-16b+7c   |    {4} | 1 0 0 0 |
                   {4} | 49a-42b-30c -11b-45c    39a+5b+36c   15a-23b+39c  |    {4} | 0 1 0 0 |
                   {4} | 2a-36b-48c  -8a-50b+24c a-24b-17c    43a-17b-11c  |    {4} | 0 0 1 0 |
                                                                                {4} | 0 0 0 1 |

o17 : ZZdFactorizationMap
i18 : assert(h != 1)

Testing for equality is not the same testing for isomorphism. In particular, different presentations of a complex need not be equal.

i19 : D = prune image g

       4      4      4
o19 = S  <-- S  <-- S
                     
      0      1      0

o19 : ZZdFactorization
i20 : p = D.cache.pruningMap

                                                                                                4
o20 = 0 : image {3} | 8a-17b+36c   26a+36b-45c  8a-24b-39c -19a-50b-30c | <------------------- S  : 0
                {3} | 47b+14c      39a-33b-39c  49a-45b-7c 15a+25b-29c  |    {4} | 1 0 0 0 |
                {3} | -21a-23b+17c -11a+42b-24c 42a+5b-11c -48a-11b+48c |    {4} | 0 1 0 0 |
                {3} | 8a-16b-4c    a+49b+2c     2a-43b-47c 43a-6b+35c   |    {4} | 0 0 1 0 |
                                                                             {4} | 0 0 0 1 |

                                                                                                4
      1 : image {4} | 42a-33b+35c 21a-25b+2c  -11a+45b-4c  -48a-47b+47c | <------------------- S  : 1
                {4} | -8a-49b-29c 8a-6b-39c   -26a-43b+14c 19a-16b+7c   |    {5} | 1 0 0 0 |
                {4} | 49a-42b-30c -11b-45c    39a+5b+36c   15a-23b+39c  |    {5} | 0 1 0 0 |
                {4} | 2a-36b-48c  -8a-50b+24c a-24b-17c    43a-17b-11c  |    {5} | 0 0 1 0 |
                                                                             {5} | 0 0 0 1 |

o20 : ZZdFactorizationMap
i21 : p == 1

o21 = false
i22 : assert(coker p == 0 and ker p == 0)
i23 : assert(prune p == 1)

See also

Ways to use this method:

  • RingElement == ZZdFactorizationMap
  • ZZ == ZZdFactorizationMap
  • ZZdFactorizationMap == RingElement
  • ZZdFactorizationMap == ZZ
  • ZZdFactorizationMap == ZZdFactorizationMap -- whether two ZZ/d-graded factorization maps are equal

The source of this document is in MatrixFactorizations/MatrixFactorizationsDOC.m2:3211:0.