From 56dedad95c591c07c01201876d1ef6db93fb94e5 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Wed, 25 Mar 2026 09:50:00 +0000 Subject: [PATCH 1/3] Narrow declaration of Factorization --- gap/attributes/factor.gd | 6 +++++- gap/semigroups/semifp.gd | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gap/attributes/factor.gd b/gap/attributes/factor.gd index 91add8019..c609d2698 100644 --- a/gap/attributes/factor.gd +++ b/gap/attributes/factor.gd @@ -13,5 +13,9 @@ DeclareOperation("MinimalFactorization", DeclareOperation("NonTrivialFactorization", [IsSemigroup, IsMultiplicativeElement]); DeclareOperation("Factorization", [IsLambdaOrb, IsPosInt, IsPerm]); -DeclareOperation("Factorization", [IsSemigroup, IsMultiplicativeElement]); +DeclareOperation("Factorization", + [IsSemigroup and CanUseFroidurePin, IsMultiplicativeElement]); +DeclareOperation("Factorization", + [IsActingSemigroup and HasGeneratorsOfSemigroup, + IsMultiplicativeElement]); DeclareOperation("TraceSchreierTreeForward", [IsSemigroupData, IsPosInt]); diff --git a/gap/semigroups/semifp.gd b/gap/semigroups/semifp.gd index bcf6c3fef..acba8be2a 100644 --- a/gap/semigroups/semifp.gd +++ b/gap/semigroups/semifp.gd @@ -26,3 +26,8 @@ DeclareOperation("ReversedOp", [IsElementOfFpMonoid]); DeclareGlobalFunction("FreeMonoidAndAssignGeneratorVars"); DeclareGlobalFunction("FreeSemigroupAndAssignGeneratorVars"); + +DeclareOperation("Factorization", [IsFpSemigroup, IsElementOfFpSemigroup]); +DeclareOperation("Factorization", [IsFpMonoid, IsElementOfFpMonoid]); +DeclareOperation("Factorization", [IsFreeSemigroup, IsWord]); +DeclareOperation("Factorization", [IsFreeMonoid, IsWord]); From c9168f0534e4be1ba5a4117edbf436fb7f3ae9ee Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Wed, 25 Mar 2026 09:52:13 +0000 Subject: [PATCH 2/3] Narrow declaration of WreathProduct --- gap/semigroups/semitrans.gd | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gap/semigroups/semitrans.gd b/gap/semigroups/semitrans.gd index ee12c8502..675cf48e4 100644 --- a/gap/semigroups/semitrans.gd +++ b/gap/semigroups/semitrans.gd @@ -42,8 +42,11 @@ DeclareOperation("EndomorphismMonoid", [IsDigraph, IsHomogeneousList]); DeclareAttribute("DigraphCore", IsDigraph); DeclareOperation("WreathProduct", - [IsMultiplicativeElementCollection, - IsMultiplicativeElementCollection]); + [IsTransformationMonoid, IsPermGroup]); +DeclareOperation("WreathProduct", + [IsPermGroup, IsTransformationSemigroup]); +DeclareOperation("WreathProduct", + [IsTransformationMonoid, IsTransformationSemigroup]); DeclareAttribute("SmallestElementRClass", IsGreensRClass); DeclareAttribute("LargestElementRClass", IsGreensRClass); From e3d9c85c5dbf45af395141adb789eb05cff34535 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Mon, 30 Mar 2026 10:16:57 +0100 Subject: [PATCH 3/3] attr: don't declare StructureDescription for IsGroupAsSemigroup --- gap/attributes/attr.gd | 1 - gap/attributes/attr.gi | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/gap/attributes/attr.gd b/gap/attributes/attr.gd index 06a89023a..8ab77e43d 100644 --- a/gap/attributes/attr.gd +++ b/gap/attributes/attr.gd @@ -53,7 +53,6 @@ DeclareAttribute("SmallestElementSemigroup", IsSemigroup); DeclareAttribute("LargestElementSemigroup", IsSemigroup); DeclareAttribute("StructureDescription", IsBrandtSemigroup); -DeclareAttribute("StructureDescription", IsGroupAsSemigroup); DeclareAttribute("StructureDescriptionMaximalSubgroups", IsSemigroup); DeclareAttribute("MaximalDClasses", IsSemigroup); diff --git a/gap/attributes/attr.gi b/gap/attributes/attr.gi index 096abd016..363c1299a 100644 --- a/gap/attributes/attr.gi +++ b/gap/attributes/attr.gi @@ -396,7 +396,7 @@ end); # same method for ideals -InstallMethod(StructureDescription, "for a group as semigroup", +InstallOtherMethod(StructureDescription, "for a group as semigroup", [IsGroupAsSemigroup], function(S) if IsGroup(S) then