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