From d641245b8d671425d9f38bb2558e413e15d7508d Mon Sep 17 00:00:00 2001 From: Wilf Wilson Date: Sun, 25 Nov 2018 19:48:49 +0100 Subject: [PATCH] semipperm: fix GeneratorsOfSemigroup for some trivial groups --- gap/semigroups/semipperm.gi | 10 +++++++++- tst/standard/semipperm.tst | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gap/semigroups/semipperm.gi b/gap/semigroups/semipperm.gi index ec265bca8..2782b77f1 100644 --- a/gap/semigroups/semipperm.gi +++ b/gap/semigroups/semipperm.gi @@ -94,7 +94,15 @@ end); InstallImmediateMethod(GeneratorsOfSemigroup, IsPartialPermSemigroup and IsGroup and HasGeneratorsOfGroup, -0, GeneratorsOfGroup); +0, +function(G) + if IsEmpty(GeneratorsOfGroup(G)) then + # WW: really this should be `return [One(G)];`, but this fails when running + # GAP's `tst/testinstall.g` for some reason that I can't figure out. + TryNextMethod(); + fi; + return GeneratorsOfGroup(G); +end); InstallMethod(RankOfPartialPermSemigroup, "for a partial perm semigroup", diff --git a/tst/standard/semipperm.tst b/tst/standard/semipperm.tst index 95a68b8a9..d61c3bbfe 100644 --- a/tst/standard/semipperm.tst +++ b/tst/standard/semipperm.tst @@ -2143,6 +2143,13 @@ gap> y := Iterator(S); gap> for x in y do od; +#T# GeneratorsOfGroup +gap> S := Group([], PartialPerm([1, 2]));; +gap> GeneratorsOfGroup(S); +[ ] +gap> GeneratorsOfSemigroup(S); +[ ] + # SEMIGROUPS_UnbindVariables gap> Unbind(F); gap> Unbind(H1);