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 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]); 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);