# Groups

## Definitions for Groups

Function: TODD_COXETER (relations,subgroup)

Find the order of G/H where G is the Free Group modulo RELATIONS, and H is the subgroup of G generated by SUBGROUP. SUBGROUP is an optional argument, defaulting to []. In doing this it produces a multiplication table for the right action of G on G/H, where the cosets are enumerated [H,Hg2,Hg3,...] This can be seen internally in the \$todd_coxeter_state. The multiplication tables for the variables are in table:todd_coxeter_state[2] Then table[i] gives the table for the ith variable. mulcoset(coset,i) := table[varnum][coset];

Example:

```(C1) symet(n):=create_list(if (j - i) = 1 then (p(i,j))^^3 else
if (not i = j) then (p(i,j))^^2 else p(i,i) , j,1,n-1,i,1,j);
<3>
(D1) SYMET(N) := CREATE_LIST(IF J - I = 1 THEN P(I, J)

<2>
ELSE (IF NOT I = J THEN P(I, J)
ELSE P(I, I)), J, 1, N - 1, I, 1, J)
(C2) p(i,j) :=concat(x,i).concat(x,j);
(D2)                P(I, J) := CONCAT(X, I) . CONCAT(X, J)
(C3) symet(5);
<3>                    <2>           <3>
(D3) [X1 . X1, (X1 . X2)   , X2 . X2, (X1 . X3)   , (X2 . X3)   ,

<2>                <2>           <3>
X3 . X3,     (X1 . X4)	 , (X2 . X4)   , (X3 . X4)   , X4 . X4]
(C4) todd_coxeter(d3);

Rows tried 426
(D4) 				      120
(C5) todd_coxeter(d3,[x1]);

Rows tried 213
(D5) 				      60
(C6) todd_coxeter(d3,[x1,x2]);

Rows tried 71
(D6) 				      20
(C7) table:todd_coxeter_state[2]\$
(C8) table:todd_coxeter_state[2]\$
(C9) table[1];
(D9) {Array: FIXNUM #(0 2 1 3 7 6 5 4 8 11 17 9 12 14 13 20
16 10 18 19 15 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0)}
```

Note only the elements 1 thru 20 of this array d9 are meaningful. table[1][4] = 7 indicates coset4.var1 = coset7