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