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