Macaulay2 » Documentation
Packages » BettiCharacters > action > action(ChainComplex,List,List,ZZ)
next | previous | forward | backward | up | index | toc

action(ChainComplex,List,List,ZZ) -- define finite group action on a resolution

Synopsis

Description

Use this function to define the action of a finite group on the minimal free resolution of a module over a polynomial ring with coefficients in a field. After setting up the action, use the function character to compute the Betti characters.

The input G is a List of group elements acting on the vector space spanned by the variables of the ring R. By default, these elements are passed as one-row substitution matrices as those accepted by substitute. One may pass these elements as square matrices by setting the optional input Sub to false. The list G can contain arbitrary group elements however, to obtain a complete representation theoretic description of the characters, G should be a list of representatives of the conjugacy classes of the group.

The example below sets up the action of a symmetric group on the resolution of a monomial ideal. The symmetric group acts by permuting the four variables of the ring. The conjugacy classes of permutations are determined by their cycle types, which are in bijection with partitions. In this case, we consider five permutations with cycle types, in order: 4, 31, 22, 211, 1111.

i1 : R = QQ[x_1..x_4]

o1 = R

o1 : PolynomialRing
i2 : I = ideal apply(subsets(gens R,2),product)

o2 = ideal (x x , x x , x x , x x , x x , x x )
             1 2   1 3   2 3   1 4   2 4   3 4

o2 : Ideal of R
i3 : RI = res I

      1      6      8      3
o3 = R  <-- R  <-- R  <-- R  <-- 0
                                  
     0      1      2      3      4

o3 : ChainComplex
i4 : G = {matrix{{x_2,x_3,x_4,x_1}},
          matrix{{x_2,x_3,x_1,x_4}},
          matrix{{x_2,x_1,x_4,x_3}},
          matrix{{x_2,x_1,x_3,x_4}},
          matrix{{x_1,x_2,x_3,x_4}} }

o4 = {| x_2 x_3 x_4 x_1 |, | x_2 x_3 x_1 x_4 |, | x_2 x_1 x_4 x_3 |, | x_2
     ------------------------------------------------------------------------
     x_1 x_3 x_4 |, | x_1 x_2 x_3 x_4 |}

o4 : List
i5 : A = action(RI,G)

o5 = ChainComplex with 5 actors

o5 : ActionOnComplex

The group elements acting on the ring can be recovered using ringActors, while their inverses can be recovered using inverseRingActors. To recover just the number of group elements, use numActors.

i6 : ringActors A

o6 = {| x_2 x_3 x_4 x_1 |, | x_2 x_3 x_1 x_4 |, | x_2 x_1 x_4 x_3 |, | x_2
     ------------------------------------------------------------------------
     x_1 x_3 x_4 |, | x_1 x_2 x_3 x_4 |}

o6 : List
i7 : inverseRingActors A

o7 = {| x_4 x_1 x_2 x_3 |, | x_3 x_1 x_2 x_4 |, | x_2 x_1 x_4 x_3 |, | x_2
     ------------------------------------------------------------------------
     x_1 x_3 x_4 |, | x_1 x_2 x_3 x_4 |}

o7 : List
i8 : numActors A

o8 = 5

The simplified version of this function suffices when dealing with resolutions of quotients of the ring R by an ideal as in the previous example. In this case, the first module in the resolution is R and it is assumed that the group acts trivially on the generator of this first module.

When resolving modules or when more flexibility is needed, one may use the general version of the function. In this case, it is necessary to specify a homological degree i and a list of group elements acting on the module C_i. The group elements are passed as a List G' of matrices written with respect to the basis of C_i used by Macaulay2. Moreover, the group elements in G' must match (in number and order) the elements in G.

To illustrate, we set up the action on the resolution of the ideal in the previous example considered as a module (as opposed to the resolution of the quotient by the ideal). In this case, the elements of G' are the permutation matrices obtained by acting with elements of G on the span of the minimal generators of the ideal. For simplicity, we construct these matrices by permuting columns of the identity.

i9 : M = module I

o9 = image | x_1x_2 x_1x_3 x_2x_3 x_1x_4 x_2x_4 x_3x_4 |

                             1
o9 : R-module, submodule of R
i10 : RM = res M

       6      8      3
o10 = R  <-- R  <-- R  <-- 0
                            
      0      1      2      3

o10 : ChainComplex
i11 : G' = { (id_(R^6))_{2,4,5,0,1,3},
             (id_(R^6))_{2,0,1,4,5,3},
             (id_(R^6))_{0,4,3,2,1,5},
             (id_(R^6))_{0,2,1,4,3,5},
              id_(R^6) }

o11 = {| 0 0 0 1 0 0 |, | 0 1 0 0 0 0 |, | 1 0 0 0 0 0 |, | 1 0 0 0 0 0 |, |
       | 0 0 0 0 1 0 |  | 0 0 1 0 0 0 |  | 0 0 0 0 1 0 |  | 0 0 1 0 0 0 |  |
       | 1 0 0 0 0 0 |  | 1 0 0 0 0 0 |  | 0 0 0 1 0 0 |  | 0 1 0 0 0 0 |  |
       | 0 0 0 0 0 1 |  | 0 0 0 0 0 1 |  | 0 0 1 0 0 0 |  | 0 0 0 0 1 0 |  |
       | 0 1 0 0 0 0 |  | 0 0 0 1 0 0 |  | 0 1 0 0 0 0 |  | 0 0 0 1 0 0 |  |
       | 0 0 1 0 0 0 |  | 0 0 0 0 1 0 |  | 0 0 0 0 0 1 |  | 0 0 0 0 0 1 |  |
      -----------------------------------------------------------------------
      1 0 0 0 0 0 |}
      0 1 0 0 0 0 |
      0 0 1 0 0 0 |
      0 0 0 1 0 0 |
      0 0 0 0 1 0 |
      0 0 0 0 0 1 |

o11 : List
i12 : action(RM,G,G',0)

o12 = ChainComplex with 5 actors

o12 : ActionOnComplex

By changing the last argument, it is possible to specify the action of the group on any module of the resolution. For example, suppose we wish to construct the action of the symmetric group on the resolution of the canonical module of the quotient in the first example. In this case, it will be more convenient to declare a trivial action on the last module of the resolution rather than figuring out the action on the first module (i.e., the generators of the canonical module). This can be achieved as follows.

i13 : E = Ext^3(R^1/I,R^{-4})

o13 = cokernel | x_4 x_2 0   x_3 0   x_3 0   0   |
               | 0   0   x_4 x_3 x_1 0   0   0   |
               | 0   0   0   0   0   x_3 x_2 x_1 |

                             3
o13 : R-module, quotient of R
i14 : RE = res E

       3      8      6      1
o14 = R  <-- R  <-- R  <-- R  <-- 0
                                   
      0      1      2      3      4

o14 : ChainComplex
i15 : G'' = toList(5:id_(R^1))

o15 = {| 1 |, | 1 |, | 1 |, | 1 |, | 1 |}

o15 : List
i16 : action(RE,G,G'',3)

o16 = ChainComplex with 5 actors

o16 : ActionOnComplex

Caveat

This function does not check if the complex C is a free resolution. If the user passes a complex that is not a free resolution, then later computations (i.e., Betti characters) may fail or return meaningless results.

Ways to use this method: