From 44344f75a5ab93b1a1cba1c20ef4664a2ffb80f4 Mon Sep 17 00:00:00 2001 From: Wilf Wilson Date: Tue, 29 Aug 2017 16:15:23 +0100 Subject: [PATCH] semieunit: fix to String for an MTSE --- doc/z-chap12.xml | 2 +- gap/semigroups/semieunit.gi | 15 ++++++++++----- tst/standard/semieunit.tst | 26 ++++++++++++++++++++++---- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/doc/z-chap12.xml b/doc/z-chap12.xml index ba750d26fb..c0cdf458a2 100644 --- a/doc/z-chap12.xml +++ b/doc/z-chap12.xml @@ -30,7 +30,7 @@ For inverse semigroups these two conditions are equivalent. We are only interested in E-unitary inverse semigroups. Before defining McAlister triple semigroups we define a McAlister triple. - A McAlister triple is a triple (G,X,Y) which consist of: + A McAlister triple is a triple (G,X,Y) which consists of: diff --git a/gap/semigroups/semieunit.gi b/gap/semigroups/semieunit.gi index bc4a00c3c4..31bb254b0c 100644 --- a/gap/semigroups/semieunit.gi +++ b/gap/semigroups/semieunit.gi @@ -199,7 +199,14 @@ function(S) X := McAlisterTripleSemigroupPartialOrder(S); Y := McAlisterTripleSemigroupSemilattice(S); return Concatenation("McAlisterTripleSemigroup(", String(G), ", ", - String(X), ", ", String(Y), ")"); + String(X), ", ", String(DigraphVertexLabels(Y)), ")"); +end); + +InstallMethod(PrintObj, "for a McAlister triple semigroup", +[IsMcAlisterTripleSemigroup], +function(S) + Print(String(S)); + return; end); #TODO Linebreak hints @@ -308,10 +315,8 @@ end); InstallMethod(String, "for a McAlister triple semigroup element rep", [IsMcAlisterTripleSemigroupElementRep], function(x) - return Concatenation("MTSE(", String(x![3]), ", ", - String(DigraphVertexLabels( - McAlisterTripleSemigroupSemilattice(x![3]))[x[1]]), - ", ", String(x[2]), ")"); + return Concatenation("MTSE(", String(x![3]), ", ", String(x![1]), ", ", + String(x![2]), ")"); end); #TODO Linebreak hints diff --git a/tst/standard/semieunit.tst b/tst/standard/semieunit.tst index d3647480ad..e2321e2e55 100644 --- a/tst/standard/semieunit.tst +++ b/tst/standard/semieunit.tst @@ -41,8 +41,10 @@ gap> M = M1; true gap> String(M); "McAlisterTripleSemigroup(SymmetricGroup( [ 2 .. 5 ] ), Digraph( [ [ 1 ], [ 1,\ - 2 ], [ 1, 3 ], [ 1, 4 ], [ 1, 5 ] ] ), Digraph( [ [ 1 ], [ 1, 2 ], [ 1, 3 ], \ -[ 1, 4 ] ] ))" + 2 ], [ 1, 3 ], [ 1, 4 ], [ 1, 5 ] ] ), [ 1 .. 4 ])" +gap> Print(M, "\n"); +McAlisterTripleSemigroup(SymmetricGroup( [ 2 .. 5 ] ), Digraph( [ [ 1 ], [ 1, \ +2 ], [ 1, 3 ], [ 1, 4 ], [ 1, 5 ] ] ), [ 1 .. 4 ]) #T# McAlisterTripleSemigroup with bad inputs gap> G1 := FreeGroup(1);; @@ -143,8 +145,7 @@ true gap> elms := Enumerator(M);; gap> String(elms[1]); "MTSE(McAlisterTripleSemigroup(SymmetricGroup( [ 2 .. 5 ] ), Digraph( [ [ 1 ],\ - [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 1, 5 ] ] ), Digraph( [ [ 1 ], [ 1, 2 ], [ 1, \ -3 ], [ 1, 4 ] ] )), 1, ())" + [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 1, 5 ] ] ), [ 1 .. 4 ]), 1, ())" gap> OneImmutable(M); Error, Semigroups: OneImutable (for McAlister triple semigroup): usage, the argument must be a monoid, @@ -236,6 +237,18 @@ gap> M5 := McAlisterTripleSemigroup(G, x1, x1, act);; gap> IsomorphismSemigroups(M1, M5); fail +#T# IsomorphismSemigroups, where RepresentativeAction fails +gap> gr := DigraphFromDigraph6String("+H_A?GC_Q@G~wA?G"); + +gap> G := Group((1, 2, 3)(4, 5, 6), (8, 9)); +Group([ (1,2,3)(4,5,6), (8,9) ]) +gap> S1 := McAlisterTripleSemigroup(G, gr, [1, 4, 5, 7, 8]); + +gap> S2 := McAlisterTripleSemigroup(G, gr, [3, 6, 7, 8, 9]); + +gap> IsomorphismSemigroups(S1, S2); +fail + #T# IsIsomorphicSemigroup gap> IsIsomorphicSemigroup(M1, M1); true @@ -271,6 +284,11 @@ gap> IsFInverseMonoid(M); true gap> IsFInverseSemigroup(M); true +gap> S := McAlisterTripleSemigroup(Group((4, 5)), +> Digraph([[1], [1, 2], [1, 3], [1, 2, 3, 4], [1, 2, 3, 5]]), [1 .. 4]); + +gap> IsFInverseSemigroup(S); +false #T# EUnitaryInverseCover gap> S := InverseMonoid([PartialPermNC([1, 3], [1, 3]),