# Sub -- act on ring via substitutions (rather than matrices)

## Description

This optional input is provided by the package BettiCharacters.

By default, the group elements acting on a ring are passed as one-row substitution matrices as those accepted by substitute. Setting Sub=>false allows the user to pass these elements as square matrices.

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. For simplicity, we construct these matrices by permuting columns of the identity.

 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 = { (id_(R^4))_{1,2,3,0}, (id_(R^4))_{1,2,0,3}, (id_(R^4))_{1,0,3,2}, (id_(R^4))_{1,0,2,3}, id_(R^4) } o4 = {| 0 0 0 1 |, | 0 0 1 0 |, | 0 1 0 0 |, | 0 1 0 0 |, | 1 0 0 0 |} | 1 0 0 0 | | 1 0 0 0 | | 1 0 0 0 | | 1 0 0 0 | | 0 1 0 0 | | 0 1 0 0 | | 0 1 0 0 | | 0 0 0 1 | | 0 0 1 0 | | 0 0 1 0 | | 0 0 1 0 | | 0 0 0 1 | | 0 0 1 0 | | 0 0 0 1 | | 0 0 0 1 | o4 : List i5 : A = action(RI,G,Sub=>false) o5 = ChainComplex with 5 actors o5 : ActionOnComplex

Similarly, setting Sub=>false causes ringActors and inverseRingActors to return the group elements acting on the ring as square matrices. With the default setting Sub=>true, the same elements are returned as one-row substitution matrices.

 i6 : ringActors(A,Sub=>false) o6 = {| 0 0 0 1 |, | 0 0 1 0 |, | 0 1 0 0 |, | 0 1 0 0 |, | 1 0 0 0 |} | 1 0 0 0 | | 1 0 0 0 | | 1 0 0 0 | | 1 0 0 0 | | 0 1 0 0 | | 0 1 0 0 | | 0 1 0 0 | | 0 0 0 1 | | 0 0 1 0 | | 0 0 1 0 | | 0 0 1 0 | | 0 0 0 1 | | 0 0 1 0 | | 0 0 0 1 | | 0 0 0 1 | o6 : List i7 : inverseRingActors(A,Sub=>false) o7 = {| 0 1 0 0 |, | 0 1 0 0 |, | 0 1 0 0 |, | 0 1 0 0 |, | 1 0 0 0 |} | 0 0 1 0 | | 0 0 1 0 | | 1 0 0 0 | | 1 0 0 0 | | 0 1 0 0 | | 0 0 0 1 | | 1 0 0 0 | | 0 0 0 1 | | 0 0 1 0 | | 0 0 1 0 | | 1 0 0 0 | | 0 0 0 1 | | 0 0 1 0 | | 0 0 0 1 | | 0 0 0 1 | o7 : List i8 : ringActors(A) o8 = {| 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 |} o8 : List i9 : inverseRingActors(A) o9 = {| 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 |} o9 : List

## Functions with optional argument named Sub :

• "action(...,Sub=>...)"
• "inverseRingActors(...,Sub=>...)"
• "ringActors(...,Sub=>...)"

## For the programmer

The object Sub is .