diff --git a/data/gens/fullbool-8.pickle.gz b/data/gens/fullbool-8.pickle.gz new file mode 100644 index 000000000..435b1984b Binary files /dev/null and b/data/gens/fullbool-8.pickle.gz differ diff --git a/data/gens/fullbool.pickle.gz b/data/gens/fullbool.pickle.gz index 37230961d..673fe1e57 100644 Binary files a/data/gens/fullbool.pickle.gz and b/data/gens/fullbool.pickle.gz differ diff --git a/data/gens/hall.pickle.gz b/data/gens/hall.pickle.gz index 88c88763f..a67247791 100644 Binary files a/data/gens/hall.pickle.gz and b/data/gens/hall.pickle.gz differ diff --git a/data/gens/reflex-6.pickle.gz b/data/gens/reflex-6.pickle.gz new file mode 100644 index 000000000..885fd68e1 Binary files /dev/null and b/data/gens/reflex-6.pickle.gz differ diff --git a/gap/semigroups/semiex.gi b/gap/semigroups/semiex.gi index 5448bb093..2441ff486 100644 --- a/gap/semigroups/semiex.gi +++ b/gap/semigroups/semiex.gi @@ -1378,9 +1378,16 @@ function(n) "/data/gens/reflex.pickle.gz")); fi; + if n = 6 and not IsBound(SEMIGROUPS.GENERATORS.Reflex[6]) then + Info(InfoSemigroups, 2, "reading generators; this may take some time"); + Add(SEMIGROUPS.GENERATORS.Reflex, + ReadGenerators(Concatenation(SEMIGROUPS.PackageDir, + "/data/gens/reflex-6.pickle.gz"))); + fi; + if not IsBound(SEMIGROUPS.GENERATORS.Reflex[n]) then - ErrorNoReturn("generators for this monoid are only known up to dimension ", - String(Length(SEMIGROUPS.GENERATORS.Reflex))); + ErrorNoReturn("generators for this monoid are only provided up to ", + "dimension 6"); fi; return Monoid(SEMIGROUPS.GENERATORS.Reflex[n]); @@ -1389,15 +1396,25 @@ end); InstallMethod(HallMonoid, "for a positive integer", [IsPosInt], function(n) + local gens, p; + if not IsBound(SEMIGROUPS.GENERATORS.Hall) then SEMIGROUPS.GENERATORS.Hall := ReadGenerators(Concatenation(SEMIGROUPS.PackageDir, "/data/gens/hall.pickle.gz")); fi; + if n = 8 then + gens := GeneratorsOfSemigroup(FullBooleanMatMonoid(8)); + p := PositionProperty(gens, + x -> ListWithIdenticalEntries(8, false) + in AsList(x)); + return Monoid(gens{[1 .. p - 1]}, gens{[p + 1 .. Length(gens)]}); + fi; + if not IsBound(SEMIGROUPS.GENERATORS.Hall[n]) then ErrorNoReturn("generators for this monoid are only known up to dimension ", - String(Length(SEMIGROUPS.GENERATORS.Hall))); + "8"); fi; return Monoid(SEMIGROUPS.GENERATORS.Hall[n]); @@ -1412,9 +1429,16 @@ function(n) "/data/gens/fullbool.pickle.gz")); fi; + if n = 8 and not IsBound(SEMIGROUPS.GENERATORS.FullBool[8]) then + Info(InfoSemigroups, 2, "reading generators; this may take some time"); + Add(SEMIGROUPS.GENERATORS.FullBool, + ReadGenerators(Concatenation(SEMIGROUPS.PackageDir, + "/data/gens/fullbool-8.pickle.gz"))); + fi; + if not IsBound(SEMIGROUPS.GENERATORS.FullBool[n]) then ErrorNoReturn("generators for this monoid are only known up to dimension ", - String(Length(SEMIGROUPS.GENERATORS.FullBool))); + "8"); fi; return Monoid(SEMIGROUPS.GENERATORS.FullBool[n]); diff --git a/tst/standard/semigroups/semiex.tst b/tst/standard/semigroups/semiex.tst index 1aad7a04e..1267500f0 100644 --- a/tst/standard/semigroups/semiex.tst +++ b/tst/standard/semigroups/semiex.tst @@ -2013,10 +2013,10 @@ gap> S := ReflexiveBooleanMatMonoid(3); gap> S := ReflexiveBooleanMatMonoid(5); -gap> S := ReflexiveBooleanMatMonoid(6); -Error, generators for this monoid are only known up to dimension 5 +gap> S := ReflexiveBooleanMatMonoid(7); +Error, generators for this monoid are only provided up to dimension 6 -# Test HallBooleanMatMonoid +# Test HallMonoid gap> HallMonoid(1); gap> S := HallMonoid(3); @@ -2026,9 +2026,13 @@ gap> Size(S); gap> S := HallMonoid(5); gap> S := HallMonoid(6); -Error, generators for this monoid are only known up to dimension 5 + +gap> S := HallMonoid(7); + +gap> S := HallMonoid(9); +Error, generators for this monoid are only known up to dimension 8 -# Test FullBooleanMatBooleanMatMonoid +# Test FullBooleanMatMonoid gap> FullBooleanMatMonoid(1); gap> S := FullBooleanMatMonoid(3); @@ -2038,7 +2042,11 @@ true gap> S := FullBooleanMatMonoid(5); gap> S := FullBooleanMatMonoid(6); -Error, generators for this monoid are only known up to dimension 5 + +gap> S := FullBooleanMatMonoid(7); + +gap> S := FullBooleanMatMonoid(9); +Error, generators for this monoid are only known up to dimension 8 # gap> SEMIGROUPS.StopTest();