Funciones y variables para grupos
=================================

 -- Función: todd_coxeter (RELACIONES, SUBGRUPO)
 -- Función: todd_coxeter (RELACIONES)

     Busca el orden de G/H donde G es el módulo del Grupo Libre de RELATIONS, y H es el subgrupo de G generado por subgrupo. subgrupo es un argumento opcional, cuyo valor por defecto es [].

     En este proceso se obtiene una tabla de multiplicación para la acción correcta de G sobre G/H, donde los co-cojuntos son enumerados [H,Hg2,Hg3,...]. Esto puede ser observado internamente en el $todd_coxeter_state.

     Las tablas de multiplicación para las variables están en la table:todd_coxeter_state[2]. Entonces la table[i] retorna la tabla para la i-ésima variable. mulcoset(coset,i) := tabla[varnum][coset];

     Ejemplo:

          (%i1) 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>
          (%o1) 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)
          (%i2) p(i,j) := concat(x,i).concat(x,j);
          (%o2)        p(i, j) := concat(x, i) . concat(x, j)
          (%i3) symet(5);
                   <2>           <3>    <2>           <2>           <3>
          (%o3) [x1   , (x1 . x2)   , x2   , (x1 . x3)   , (x2 . x3)   ,

                      <2>           <2>           <2>           <3>    <2>
                    x3   , (x1 . x4)   , (x2 . x4)   , (x3 . x4)   , x4   ]
          (%i4) todd_coxeter(%o3);

          Rows tried 426
          (%o4)                          120
          (%i5) todd_coxeter(%o3,[x1]);

          Rows tried 213
          (%o5)                          60
          (%i6) todd_coxeter(%o3,[x1,x2]);

          Rows tried 71
          (%o6)                          20
          (%i7) table:todd_coxeter_state[2]$
          (%i8) table[1];
          (%o8) {Array: (SIGNED-BYTE 30) #(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)}

     Nótese que sólo los elementos 1 hasta el 20 de este arreglo %o8 son significativos. table[1][4] = 7 indica coset4.var1 = coset7