1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
LoadPackage("io");
# f an FpGroup:
TryFinite := function(f)
local ct;
ct := CosetTable(f,TrivialSubgroup(f):silent);
if ct <> fail then
return Length(ct[1]);
fi;
Print("Finite: looping\n");
while true do ct := ct; od;
end;
TryInfinite := function(f)
local ab,h,l;
ab := AbelianInvariants(f);
if 0 in ab then return infinity; fi;
l := LowIndexSubgroupsFpGroupIterator(f,40);
while not(IsDoneIterator(l)) do
h := NextIterator(l);
ab := AbelianInvariants(h);
if 0 in ab then return infinity; fi;
od;
Print("Infinite: looping\n");
while true do ab := ab; od;
end;
f := FreeGroup(2);
Print(ParTakeFirstResultByFork([TryFinite,TryInfinite],[[f],[f]],
rec( TimeOut := rec( tv_sec := 60, tv_usec := 0 ) )),"\n");
f := FreeGroup("a","b");
a := f.a;
b := f.b;
rels := [ a^2, b^3, a*b*a*b*a*b*a*b*a*b*a*b*a*b*a*b*a*b*a*b*a*b,
a^-1*b^-1*a*b*a^-1*b^-1*a*b*a^-1*b^-1*a*b*a^-1*b^-1*a*b*a^-1*b^-1*a*b*a^
-1*b^-1*a*b, a*b*a*b*a*b^-1*a*b*a*b*a*b^-1*a*b*a*b*a*b^-1*a*b*a*b*a*b^
-1*a*b*a*b*a*b^-1*a*b*a*b*a*b^-1, a*b*a*b*a*b^-1*a*b^-1*a*b*a*b*a*b^
-1*a*b^-1*a*b*a*b*a*b^-1*a*b^-1*a*b*a*b*a*b^-1*a*b^-1*a*b*a*b*a*b^-1*a*b^-1 ];
g := f/rels; # this is M12
Print(ParTakeFirstResultByFork([TryFinite,TryInfinite],[[g],[g]],
rec( TimeOut := rec( tv_sec := 60, tv_usec := 0 ) )),"\n");
|