next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Macaulay2Doc :: antipode

antipode -- antipode for skew commuting polynomial rings

Synopsis

Description

If the ring does not have skew commuting variables, antipode is the identify function.

If the ring does have skew commuting variables, then the antipode returns a new polynomial with the same monomials, and the coefficients have been modified to provide an isomorphism with the ring, and its opposite ring, i.e. this switches left and right modules of the ring.

This is implemented in the following simple manner: each monomial which has exactly $d$ skew commuting variables occuring (thus, with exponent 1 each), is multiplied by $(-1)^{(d-1)(d-2)/2}$.

i1 : R = ZZ/32003[a..f, SkewCommutative => true]

o1 = R

o1 : PolynomialRing, 6 skew commutative variables
i2 : F = 1 + a + b + a*b + b*c*d + a*b*c*d*e

o2 = a*b*c*d*e + b*c*d + a*b + a + b + 1

o2 : R
i3 : antipode F

o3 = a*b*c*d*e - b*c*d - a*b + a + b + 1

o3 : R

If the ring has some skew commuting variables, and some commutative ones, then only the skew ones are considered.

i4 : S = ZZ/32003[a..f, SkewCommutative => {0,1,2}]

o4 = S

o4 : PolynomialRing, 3 skew commutative variables
i5 : F = 1 + a + b + a*b + b*c*d + a*b*c*d*e

o5 = a*b*c*d*e + b*c*d + a*b + a + b + 1

o5 : S
i6 : antipode F

o6 = - a*b*c*d*e - b*c*d - a*b + a + b + 1

o6 : S

The transpose of a matrix applies this function to each entry. This is basically because the transpose of a left module gives a right module, and we need to make that a left module again. The key reason for this is so that the transpose of a complex remains a complex.

i7 : use R

o7 = R

o7 : PolynomialRing, 6 skew commutative variables
i8 : M = matrix{{a*b-1, a*c-d, e-a*b*c}}

o8 = | ab-1 ac-d -abc+e |

             1       3
o8 : Matrix R  <--- R
i9 : N = syz M

o9 = {2} | -ad 0  cd   be ae -abd+ac-d -abc-bd -bcd 2abd-ac+d abc-abe-e
     {2} | a   cd bd-c 0  0  1         b       bc   -ab-1     0        
     {3} | 0   0  0    b  a  0         0       0    0         -1       
     ------------------------------------------------------------------------
     bde+ce abce |
     be     0    |
     c      e    |

             3       12
o9 : Matrix R  <--- R
i10 : M*N

o10 = 0

              1       12
o10 : Matrix R  <--- R
i11 : (transpose N) * (transpose M)

o11 = 0

              12       1
o11 : Matrix R   <--- R

If we had not used the antipode, then this would be false!

i12 : Mt = matrix transpose entries M -- this does not use antipode

o12 = | ab-1   |
      | ac-d   |
      | -abc+e |

              3       1
o12 : Matrix R  <--- R
i13 : Nt = matrix transpose entries N -- this does not use antipode

o13 = | -ad       a     0  |
      | 0         cd    0  |
      | cd        bd-c  0  |
      | be        0     b  |
      | ae        0     a  |
      | -abd+ac-d 1     0  |
      | -abc-bd   b     0  |
      | -bcd      bc    0  |
      | 2abd-ac+d -ab-1 0  |
      | abc-abe-e 0     -1 |
      | bde+ce    be    c  |
      | abce      0     e  |

              12       3
o13 : Matrix R   <--- R
i14 : Nt*Mt -- is not zero!

o14 = | 2ad    |
      | 0      |
      | -2cd   |
      | -2be   |
      | -2ae   |
      | 0      |
      | 2bd    |
      | 0      |
      | 0      |
      | 0      |
      | -2ce   |
      | -2abce |

              12       1
o14 : Matrix R   <--- R

Caveat

If the ring is a Weyl algebra, the antipode is the identity, which is probably not what is wanted. If the ring is a quotient of a skew commuting polynomial ring $R/I$, then the antipode of an element should really be in the quotient ring $R/(antipode(I))$, but this function returns an element in the same ring.

See also

Ways to use antipode :

For the programmer

The object antipode is a method function.