Macaulay2 » Documentation
Packages » Complexes :: dual(Complex)
next | previous | forward | backward | up | index | toc

dual(Complex) -- make the dual of a complex

Synopsis

Description

The dual of a complex $C$ is by definition $\operatorname{Hom}(C, R)$, where $R$ is the ring of $C$.

i1 : S = ZZ/101[a..d];
i2 : B = intersect(ideal(a,c),ideal(b,d))

o2 = ideal (c*d, a*d, b*c, a*b)

o2 : Ideal of S
i3 : C1 = freeResolution B

      1      4      4      1
o3 = S  <-- S  <-- S  <-- S
                           
     0      1      2      3

o3 : Complex
i4 : C2 = dual C1

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

o4 : Complex
i5 : assert(C2 == Hom(C1, S^1))
i6 : C1 == dual dual C1

o6 = true
i7 : prune HH C2

o7 = cokernel {-4} | d c b a | <-- cokernel {-2} | c a 0 0 |
                                            {-2} | 0 0 d b |
     -3                             
                                   -2

o7 : Complex

The double dual is not necessarily isomorphic to the original complex.

i8 : I = ideal(a^2, a*b, b^2)

             2        2
o8 = ideal (a , a*b, b )

o8 : Ideal of S
i9 : J = ideal(b^3, b*c, c^3)

             3        3
o9 = ideal (b , b*c, c )

o9 : Ideal of S
i10 : K = intersect(I,J)

              2           3   2 3
o10 = ideal (b c, a*b*c, b , a c )

o10 : Ideal of S
i11 : f = map(S^1/I ++ S^1/J, S^1/K, {{1},{1}})

o11 = | 1 |
      | 1 |

o11 : Matrix
i12 : g = map(S^1/(I+J), S^1/I ++ S^1/J, {{1,-1}})

o12 = | 1 -1 |

o12 : Matrix
i13 : C = complex{g,f}

o13 = cokernel | a2 ab b2 b3 bc c3 | <-- cokernel | a2 ab b2 0  0  0  | <-- cokernel | b2c abc b3 a2c3 |
                                                  | 0  0  0  b3 bc c3 |      
      0                                                                     2
                                         1

o13 : Complex
i14 : assert isWellDefined C
i15 : assert isExact C
i16 : assert(dual C == 0)
i17 : assert(C != dual dual C)

See also

Ways to use this method: