From c80dde42575450fa7a1746f667de58417216239b Mon Sep 17 00:00:00 2001 From: R Giacomelli <54901533+iortas@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:28:18 +0100 Subject: [PATCH 1/2] freeband: add method for OnePseudoInverse --- doc/attr.xml | 4 ++++ gap/fp/freeband.gi | 7 +++++++ tst/standard/fp/freeband.tst | 10 ++++++++++ 3 files changed, 21 insertions(+) diff --git a/doc/attr.xml b/doc/attr.xml index 77a313b9e..4a467d87d 100644 --- a/doc/attr.xml +++ b/doc/attr.xml @@ -1278,6 +1278,10 @@ Error, the semigroup is not finite]]> . + elements of a free band + + . + See also . diff --git a/gap/fp/freeband.gi b/gap/fp/freeband.gi index 19f506be5..f5d18e73e 100644 --- a/gap/fp/freeband.gi +++ b/gap/fp/freeband.gi @@ -504,3 +504,10 @@ function(_, hashlen) return rec(func := SEMIGROUPS.HashFunctionForFreeBandElements, data := hashlen); end); + +InstallMethod(OnePseudoInverseOfSemigroupElement, +"for a free band element", +[IsFreeBandElement], +function(x) + return x; +end); \ No newline at end of file diff --git a/tst/standard/fp/freeband.tst b/tst/standard/fp/freeband.tst index 19770b6f7..c4c64c831 100644 --- a/tst/standard/fp/freeband.tst +++ b/tst/standard/fp/freeband.tst @@ -316,6 +316,16 @@ Error, the generator names must be distinct gap> FreeBand(["a", "x", "y", "x", "d"]); Error, the generator names must be distinct +# OnePseudoInverseOfSemigroupElement +gap> S := FreeBand(5); + +gap> gens := GeneratorsOfSemigroup(S); +[ x1, x2, x3, x4, x5 ] +gap> z := gens[1]*gens[3]*gens[2]*gens[2]*gens[5]*gens[3]; +x1x3x2x5x1x3x2x5x2x5x3 +gap> OnePseudoInverseOfSemigroupElement(z) +x1x3x2x5x1x3x2x5x2x5x3 + # gap> SEMIGROUPS.StopTest(); gap> STOP_TEST("Semigroups package: standard/fp/freeband.tst"); From 8441a8ed4d5be4b2810fbec42403cab912006a12 Mon Sep 17 00:00:00 2001 From: R Giacomelli <54901533+iortas@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:28:18 +0100 Subject: [PATCH 2/2] freeband: add method for OnePseudoInverse --- doc/attr.xml | 4 ++++ gap/fp/freeband.gi | 4 ++++ tst/standard/fp/freeband.tst | 8 ++++++++ 3 files changed, 16 insertions(+) diff --git a/doc/attr.xml b/doc/attr.xml index 77a313b9e..4a467d87d 100644 --- a/doc/attr.xml +++ b/doc/attr.xml @@ -1278,6 +1278,10 @@ Error, the semigroup is not finite]]> . + elements of a free band + + . + See also . diff --git a/gap/fp/freeband.gi b/gap/fp/freeband.gi index 19f506be5..3f5c8390f 100644 --- a/gap/fp/freeband.gi +++ b/gap/fp/freeband.gi @@ -504,3 +504,7 @@ function(_, hashlen) return rec(func := SEMIGROUPS.HashFunctionForFreeBandElements, data := hashlen); end); + +InstallMethod(OnePseudoInverseOfSemigroupElement, +"for a free band element", +[IsFreeBandElement], IdFunc); \ No newline at end of file diff --git a/tst/standard/fp/freeband.tst b/tst/standard/fp/freeband.tst index 19770b6f7..888eedc63 100644 --- a/tst/standard/fp/freeband.tst +++ b/tst/standard/fp/freeband.tst @@ -316,6 +316,14 @@ Error, the generator names must be distinct gap> FreeBand(["a", "x", "y", "x", "d"]); Error, the generator names must be distinct +# OnePseudoInverseOfSemigroupElement +gap> S := FreeBand(5); + +gap> z := S.1 * S.3 * S.2 * S.2 * S.5 * S.3; +x1x3x2x5x1x3x2x5x2x5x3 +gap> OnePseudoInverseOfSemigroupElement(z); +x1x3x2x5x1x3x2x5x2x5x3 + # gap> SEMIGROUPS.StopTest(); gap> STOP_TEST("Semigroups package: standard/fp/freeband.tst");