diff --git a/doc/semifp.xml b/doc/semifp.xml index 6a5484f91..c16cffdcd 100644 --- a/doc/semifp.xml +++ b/doc/semifp.xml @@ -122,4 +122,40 @@ true]]> <#/GAPDoc> +<#GAPDoc Label="AntiIsomorphismDualFpSemigroup"> + + + + A finitely presented semigroup or monoid. + + AntiIsomorphismDualFpSemigroup returns an anti-isomorphism () from the + finitely presented semigroup S to another finitely presented + semigroup. The range finitely presented semigroup is obtained from S + by reversing the relations of S.

+ + AntiIsomorphismDualFpMonoid works analogously when S is a + finitely presented monoid, and the range of the returned anti-isomorphism + is a finitely presented monoid. + + F := FreeSemigroup("a", "b"); + +gap> AssignGeneratorVariables(F); +gap> R := [[a ^ 3, a], [b ^ 2, b], [(a * b) ^ 2, a]]; +[ [ a^3, a ], [ b^2, b ], [ (a*b)^2, a ] ] +gap> S := F / R; + +gap> map := AntiIsomorphismDualFpSemigroup(S); +MappingByFunction( , + , function( x ) ... end, function( x ) ... end ) +gap> RelationsOfFpSemigroup(Range(map)); +[ [ a^3, a ], [ b^2, b ], [ (b*a)^2, a ] ] +]]> + + +<#/GAPDoc> + diff --git a/doc/z-chap06.xml b/doc/z-chap06.xml index c63803c2a..64855e092 100644 --- a/doc/z-chap06.xml +++ b/doc/z-chap06.xml @@ -428,6 +428,7 @@ gap> AsSemigroup(IsPBRSemigroup, M); <#Include Label = "RZMSNormalization"> <#Include Label = "RMSNormalization"> <#Include Label = "IsomorphismReesZeroMatrixSemigroup"> + <#Include Label = "AntiIsomorphismDualFpSemigroup"> diff --git a/tst/standard/semigroups/semifp.tst b/tst/standard/semigroups/semifp.tst index f534a0a60..50f8856ea 100644 --- a/tst/standard/semigroups/semifp.tst +++ b/tst/standard/semigroups/semifp.tst @@ -2572,6 +2572,36 @@ a*b^2*a gap> Reversed(One(S)); +# AntiIsomorphismDualFpMonoid/Semigroup +gap> F := FreeSemigroup("a", "b"); + +gap> AssignGeneratorVariables(F); +gap> R := [[a ^ 3, a], [b ^ 2, b], [(a * b) ^ 2, a]]; +[ [ a^3, a ], [ b^2, b ], [ (a*b)^2, a ] ] +gap> S := F / R; + +gap> map := AntiIsomorphismDualFpSemigroup(S); +MappingByFunction( , , function( x ) ... end, function( x ) ... end ) +gap> RelationsOfFpSemigroup(Range(map)); +[ [ a^3, a ], [ b^2, b ], [ (b*a)^2, a ] ] +gap> F := FreeMonoid("a", "b"); + +gap> AssignGeneratorVariables(F); +gap> R := [[a ^ 3, One(F)], [b ^ 2, One(F)], [(a * b) ^ 2, One(F)]]; +[ [ a^3, ], [ b^2, ], + [ (a*b)^2, ] ] +gap> S := F / R; + +gap> map := AntiIsomorphismDualFpMonoid(S); +MappingByFunction( + , + , function( x ) ... end, function( x ) ... end ) +gap> RelationsOfFpMonoid(Range(map)); +[ [ a^3, ], [ b^2, ], + [ (b*a)^2, ] ] + # SEMIGROUPS_UnbindVariables gap> Unbind(a); gap> Unbind(b);