1 votos

Cómo evitar la ruptura del bucle en GAP

Estaba tratando de encontrar si existe un grupo finito con la siguiente presentación:

$$<a, b,c, d|\,a^2, b^2,c^2, d^2, (a\,c)^{4\,i}, (a\,d)^{3\,j}, (b\,c)^{3\,k}, (b\,c)^{3\,l}, (a\,c\,d)^{3\,m}, (b\,c\,d)^{4\,n},(a\,b\,c)^{3\,o},(a\,b\,d)^{4\,p},(a\,b\,c\,d)^{3\,q}>,$$ donde $$1\le i,j,\ldots,q \le 3$$ son números enteros.

Escribí un código. (Lo daré al final). Mientras se ejecuta, da los mensajes de error de la siguiente manera:

Mensaje de error

I El cálculo de la tabla Coset ha fallado -- probando con un límite de tabla mayor

I El cálculo de la tabla Coset ha fallado -- probando con un límite de tabla mayor

I El cálculo de la tabla Coset ha fallado -- probando con un límite de tabla mayor

I El cálculo de la tabla Coset ha fallado -- probando con un límite de tabla mayor

Error, se ha excedido la memoria permitida (opción de línea de comandos `-o') en

prev[2 * limit] := 2 * limit - 1; llamado desde

TCENUM.CosetTableFromGensAndRels( fgens, grels, fsgens ) llamado desde

CosetTableFromGensAndRels( fgens, grels, List( trial, UnderlyingElement )

) llamado desde Attempt( gens ) llamado desde

FinIndexCyclicSubgroupGenerator( G, infinito ) llamado desde

( ) llamado desde el bucle de lectura-evaluación en la línea 7 de >second.g puede 'return;'

Si ahora damos la orden "brk> return;" entonces GAP termina después de dar un mensaje

brecha: ¡no se puede ampliar más el espacio de trabajo!

Estaba buscando una solución para este problema. No quiero que se termine el programa. De lo contrario, tengo que hacer $3^9=19683$ las carreras a mano y es un trabajo muy aburrido.

Código

para i en [1 .. 3] hacer

para j en [1 .. 3] hacer

para k en [1 .. 3] hacer

para l en [1 .. 3] hacer

para m en [1 .. 3] hacer

para n en [1 .. 3] hacer

para o en [1 .. 3] hacer

para p en [1 .. 3] hacer

para q en [1 .. 3] hacer

F2 := FreeGroup( "a", "b", "c", "d" );

A5 := F2 / [ F2.1^2, F2.2^2,F2.3^2, F2.4^2, (F2.1*F2.3)^(4*i), (F2.1*F2.4)^(3*j), (F2.2*F2.3)^(3*k), (F2.2*F2.3)^(3*l), (F2. 1*F2.3*F2.4)^(3*m), (F2.2*F2.3*F2.4)^(4*n),(F2.1*F2.2*F2.3)^(3*o),(F2.1*F2.2*F2.4)^(4*p),(F2.1*F2.2*F2.3*F2.4)^(3*q) ];

AppendTo( "segundo.txt",[i,j,k,l,m,n,o,p,q,],Tamaño(A5)," \n " );

od; od; od; od; od; od; od; od;

4voto

Earlsquareling Puntos 11

Puede utilizar el silent opción para conseguirlo. Lamentablemente, su uso en este ejemplo es un poco complicado (no podemos pasarla directamente al Size que desencadena el comando enumeración del coset, porque Size no puede hacer frente al fracaso de la enumeración).

Pero esto debería funcionar. Por supuesto, sólo encontrará ejemplos que sean lo suficientemente pequeños para que funcione la enumeración ingenua del coset, por lo que es fácil que se pierdan ejemplos finitos. Para hacer esto correctamente, me temo que tendrá que aprender más de los antecedentes teóricos teórica, y quizás también buscar herramientas como ACE, el enumerador avanzado de cosetas. Pero incluso así es un asunto lento.

Otra cosa que puedes hacer es poner el max a un valor numérico mayor que el valor por defecto CosetTableDefaultMaxLimit entonces necesitas más tiempo y más sin embargo.

F := FreeGroup( "a", "b", "c", "d" );
for i in [1 .. 3] do for j in [1 .. 3] do
 for k in [1 .. 3] do for l in [1 .. 3] do
  for m in [1 .. 3] do for n in [1 .. 3] do
   for o in [1 .. 3] do for p in [1 .. 3] do
    for q in [1 .. 3] do
      Print("Running computation for ",[i,j,k,l,m,n,o,p,q,],"\n");
      rels := [ F.1^2, F.2^2,F.3^2, F.4^2,
                (F.1*F.3)^(4*i), (F.1*F.4)^(3*j), (F.2*F.3)^(3*k),
                (F.2*F.3)^(3*l), (F.1*F.3*F.4)^(3*m), (F.2*F.3*F.4)^(4*n),
                (F.1*F.2*F.3)^(3*o), (F.1*F.2*F.4)^(4*p),
                (F.1*F.2*F.3*F.4)^(3*q) ];
      G := F / rels;

      G := FactorGroupFpGroupByRels(F, rels : silent);
      ct := TryCosetTableInWholeGroup(TrivialSubgroup(G) : silent);
      if ct <> fail then
        size := Length(ct[1]);
        #AppendTo( "second.txt",[i,j,k,l,m,n,o,p,q,],size,"\n" );
        Print( "  found G for ",[i,j,k,l,m,n,o,p,q,]," of size ", size,"\n" );
      fi;
    od;
   od; od;
  od; od;
 od; od;
od; od;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X