Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/semigroups/tst/standard/attributes/   (GAP Algebra Version 4.15.1©)  Datei vom 29.7.2025 mit Größe 42 kB image not shown  

Quelle  isorms.tst   Sprache: unbekannt

 
Spracherkennung für: .tst vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#############################################################################
##
#W  standard/attributes/isorms.tst
#Y  Copyright (C) 2015-2022                              James D. Mitchell
##
##  Licensing information can be found in the README file of this package.
##
#############################################################################
##

#@local A, B, BruteForceInverseCheck, BruteForceIsoCheck, G, G1, G2, H, I, R
#@local R1, R2, S, T, U, UU, V, W, WW, auto, comp, func, g, g_elms_list, id
#@local inv, iso, map, mat, mat1, mat2, norm, out, x, y
gap> START_TEST("Semigroups package: standard/attributes/isorms.tst");
gap> LoadPackage("semigroups", false);;

#
gap> SEMIGROUPS.StartTest();

# helper functions
gap> BruteForceIsoCheck := function(iso)
>   local x, y;
>   if not IsInjective(iso) or not IsSurjective(iso) then
>     return false;
>   fi;
>   for x in Generators(Source(iso)) do
>     for y in Generators(Source(iso)) do
>       if x ^ iso * y ^ iso <> (x * y) ^ iso then
>         return false;
>       fi;
>     od;
>   od;
>   return true;
> end;;
gap> BruteForceInverseCheck := function(map)
> local inv;
>   inv := InverseGeneralMapping(map);
>   return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
>     and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
> end;;

#
gap> R := ReesZeroMatrixSemigroup(Group([(28), (286)]),
> [[0, (28), 000, (286)],
>  [(), 0, (286), (26), (268), 0],
>  [(286), 0, (268), (28), (), 0],
>  [(286), 0, (268), (28), (), 0],
>  [0, (286), 000, (28)],
>  [(286), 0, (268), (28), (), 0]]);;
gap> A := AutomorphismGroup(R);;
gap> Print(A.1); "string to test printing";
RZMSIsoByTriple ( ReesZeroMatrixSemigroup( Group( [ (2,8), (2,8,6) ] ), 
[ [ 0, (2,8), 000, (2,8,6) ], [ (), 0, (2,8,6), (2,6), (2,6,8), 0 ], 
  [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ]
    , [ 0, (2,8,6), 000, (2,8) ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ] 
 ] ), ReesZeroMatrixSemigroup( Group( [ (2,8), (2,8,6) ] ), 
[ [ 0, (2,8), 000, (2,8,6) ], [ (), 0, (2,8,6), (2,6), (2,6,8), 0 ], 
  [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ]
    , [ 0, (2,8,6), 000, (2,8) ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ] 
 ] ), (), IdentityMapping( Group( [ (2,8), (2,8,6) ] ) ), 
[ (2,6), (6,8), (2,8), (2,6), (6,8), (2,8), (2,6), (2,6), (6,8), (6,8), 
  (2,8), (6,8) ] )"string to test printing"
gap> Size(Range(IsomorphismPermGroup(A)));
82944

#
gap> SetInfoLevel(InfoSemigroups, 2);
gap> R := ReesZeroMatrixSemigroup(Group([(28), (286)]),
> [[0, (28), 000, (286)],
>  [(), 0, (286), (26), (268), 0],
>  [(286), 0, (268), (28), (), 0],
>  [(286), 0, (268), (28), (), 0],
>  [0, (286), 000, (28)],
>  [(286), 0, (268), (28), (), 0]]);;
gap> A := AutomorphismGroup(R);;
#I  the graph has 2304 automorphisms
#I  the size of stabilizer of the matrix is 12
#I  the underlying group has 6 automorphisms
#I  the size of the stabilizer of the matrix entries is 1
#I  the graph has 2 connected components
#I  backtracking in the direct product of size 2304 . . . 
#I  found subgroup of size 2304
gap> Size(Range(IsomorphismPermGroup(A)));
82944
gap> SetInfoLevel(InfoSemigroups, 0);

#
gap> I := MinimalIdeal(PartitionMonoid(4));;
gap> R := Range(IsomorphismReesMatrixSemigroup(I));;
gap> G := AutomorphismGroup(R);
<automorphism group of <Rees matrix semigroup 15x15 over Group(())> with 
5 generators>
gap> G := Range(IsomorphismPermGroup(AutomorphismGroup(R)));;
gap> Size(G);
1710012252724199424000000

# RZMSInducedFunction with lots of connected component
gap> I := SemigroupIdeal(
>  InverseMonoid([
>    PartialPermNC([12345], [23451]),
>    PartialPermNC([12345], [21345]),
>    PartialPermNC([2345], [1234])]),
>  [PartialPermNC([1], [1])]);;
gap> R := Range(IsomorphismReesZeroMatrixSemigroup(I));
<Rees 0-matrix semigroup 5x5 over Group(())>
gap> A := AutomorphismGroup(R);
<automorphism group of <Rees 0-matrix semigroup 5x5 over Group(())> with 
5 generators>
gap> Size(A);
120
gap> ForAll(A, BruteForceIsoCheck);
true

# RMSInducedFunction
gap> AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 43));
<automorphism group of <Rees matrix semigroup 4x3 over Group(())> with 
5 generators>

# RZMSInducedFunction with one connected component
gap> R := ReesZeroMatrixSemigroup(Group([()]),
> [[(), (), (), ()], [(), (), (), ()], [(), (), (), ()]]);
<Rees 0-matrix semigroup 4x3 over Group(())>
gap> AutomorphismGroup(R);
<automorphism group of <Rees 0-matrix semigroup 4x3 over Group(())> with 
6 generators>
gap> Size(last);
144
gap> ForAll(A, BruteForceIsoCheck);
true

# AutomorphismGroup: for a RZMS with trivial automorphism group of graph
gap> R := ReesZeroMatrixSemigroup(Group([(123), (12)]),
>                                 [[(13), (12)], [0, (23)]]);;
gap> A := AutomorphismGroup(R);;
gap> Size(A);
6
gap> IsAbelian(A);
false

# AutomorphismGroup: for a RZMS over not a group
gap> S := ReesZeroMatrixSemigroup(FullTransformationMonoid(2),
>                                 [[IdentityTransformation]]);
<Rees 0-matrix semigroup 1x1 over <full transformation monoid of degree 2>>
gap> G := AutomorphismGroup(S);;
gap> IsCyclic(G);
true

# AutomorphismGroup: for a RZMSDigraph with 0 generators
gap> func := function(n, i)
>   local out;
>   out := ListWithIdenticalEntries(n, 0);
>   out[i] := ();
>   return out;
> end;
function( n, i ) ... end
gap> mat := List([1 .. 33], i -> func(33, i));;
gap> R := ReesZeroMatrixSemigroup(Group(()), mat);
<Rees 0-matrix semigroup 33x33 over Group(())>
gap> AutomorphismGroup(R);
<automorphism group of <Rees 0-matrix semigroup 33x33 over Group(())> with 
33 generators>

# AutomorphismGroup: for a RMS over not a group
gap> R := ReesMatrixSemigroup(SymmetricInverseMonoid(2), [[PartialPerm([1])]]);
<Rees matrix semigroup 1x1 over <symmetric inverse monoid of degree 2>>
gap> GeneratorsOfSemigroup(R);;
gap> G := AutomorphismGroup(R);;
gap> IsCyclic(G);
true

# AutomorphismGroup: 1x1 RMS
gap> R := ReesMatrixSemigroup(Group(()), [[()]]);
<Rees matrix semigroup 1x1 over Group(())>
gap> A := AutomorphismGroup(R);
<automorphism group of <Rees matrix semigroup 1x1 over Group(())> with 
1 generator>
gap> ForAll(A, BruteForceIsoCheck);
true

# AutomorphismGroup: 1x2 and 2x1 RMS
gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 21));
<automorphism group of <Rees matrix semigroup 2x1 over Group(())> with 
2 generators>
gap> ForAll(A, BruteForceIsoCheck);
true
gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 12));
<automorphism group of <Rees matrix semigroup 1x2 over Group(())> with 
2 generators>
gap> ForAll(A, BruteForceIsoCheck);
true

# AutomorphismGroup: 1x3 and 3x1 RMS
gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 31));
<automorphism group of <Rees matrix semigroup 3x1 over Group(())> with 
3 generators>
gap> ForAll(A, BruteForceIsoCheck);
true
gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 13));
<automorphism group of <Rees matrix semigroup 1x3 over Group(())> with 
3 generators>
gap> ForAll(A, BruteForceIsoCheck);
true

# AutomorphismGroup: 33x33 RMS
gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 3333));
<automorphism group of <Rees matrix semigroup 33x33 over Group(())> with 
65 generators>

# AutomorphismGroup: RMS over non-trivial group
gap> B := AutomorphismGroup(ReesMatrixSemigroup(SymmetricGroup(3), [[(), ()]]));
<automorphism group of <Rees matrix semigroup 2x1 over Sym( [ 1 .. 3 ] )>
  with 7 generators>

# \< for triples over different RMS
gap> A.1 < B.2;
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `<' on 2 arguments

# Codecoverage
gap> S := 
> ReesMatrixSemigroup(Group([(12)(3118)(4117)(5116)(6115)(7114)(8113)(9112)
>     (10111)(11110)(12109)(13108)(14107)(15106)(16105)(17104)(18103)(19102)(20101)
>     (21100)(2299)(2398)(2497)(2596)(2695)(2794)(2893)(2992)(3091)(3190)
>     (3289)(3388)(3487)(3586)(3685)(3784)(3883)(3982)(4081)(4180)(4279)
>     (4378)(4477)(4576)(4675)(4774)(4873)(4972)(5071)(5170)(5269)(5368)
>     (5467)(5566)(5665)(5764)(5863)(5962)(6061),
>   (135791113151719212325272931333537394143454749,
>       51535557596163656769717375777981838587899193959799,
>      101103105107109111113115117)(2468101214161820222426283032,
>      34363840424446485052545658606264666870727476788082,
>       8486889092949698100102104106108110112114116118)]),
> [[(), ()],
>   [(), (127537910513396591117255177103113763891152349751019,
>           3561871132147739973359851111945719753157831091743,
>           6995329558110715416793)(228548010614406692118265278,
>          10412386490116245076102103662881142248741008346086112,
>           20467298632588411018447096430568210816426894)],
>   [(), (182)(281)(380)(479)(578)(677)(776)(875)(974)(1073)
>         (1172)(1271)(1370)(1469)(1568)(1667)(1766)(1865)(1964)(2063)
>         (2162)(2261)(2360)(2459)(2558)(2657)(2756)(2855)(2954)(3053)
>         (3152)(3251)(3350)(3449)(3548)(3647)(3746)(3845)(3944)(4043)
>         (4142)(83118)(84117)(85116)(86115)(87114)(88113)(89112)(90111)(91110)
>         (92109)(93108)(94107)(95106)(96105)(97104)(98103)(99102)(100101)]]);
<Rees matrix semigroup 2x3 over <permutation group with 2 generators>>
gap> AutomorphismGroup(S);
<automorphism group of <Rees matrix semigroup 2x3 over 
  <permutation group of size 118 with 2 generators>> with 3 generators>

# IdentityMapping: for an RMS
gap> R := ReesMatrixSemigroup(Group([()]), [[()]]);
<Rees matrix semigroup 1x1 over Group(())>
gap> map := IdentityMapping(R);
((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
gap> BruteForceIsoCheck(last);
true
gap> ForAll(R, x -> x = x ^ map);
true

# IsomorphismSemigroups: RMS fail
gap> R := RectangularBand(IsReesMatrixSemigroup, 22);
<Rees matrix semigroup 2x2 over Group(())>
gap> S := RectangularBand(IsReesMatrixSemigroup, 23);
<Rees matrix semigroup 2x3 over Group(())>
gap> IsomorphismSemigroups(R, S);
fail

# IsomorphismSemigroups: from RMS to itself
gap> R := RectangularBand(IsReesMatrixSemigroup, 22);
<Rees matrix semigroup 2x2 over Group(())>
gap> map := IsomorphismSemigroups(R, R);
((), IdentityMapping( Group( [ () ] ) ), [ (), (), (), () ])
gap> BruteForceIsoCheck(map);
true
gap> ForAll(R, x -> x = x ^ map);
true

# IsomorphismSemigroups: from RMS to RMS
gap> S := ReesMatrixSemigroup(Group([(12)]), [[(), ()], [(), (12)]]);;
gap> R := ReesMatrixSemigroup(Group([(12)]), [[(), (12)], [(), ()]]);;
gap> map := IsomorphismSemigroups(R, S);
((), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ), 
[ (1,2) ], [ (1,2) ] ), [ (), (1,2), (), () ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := InverseGeneralMapping(map);
((), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ), 
[ (1,2) ], [ (1,2) ] ), [ (), (1,2), (), () ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# IsomorphismSemigroups: from RZMS to RZMS
gap> S := ReesZeroMatrixSemigroup(Group([()]), [[(), ()], [(), 0]]);;
gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), 0], [(), ()]]);;
gap> map := IsomorphismSemigroups(R, S);
((3,4), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [  ], 
[  ] ), [ (), (), (), () ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := InverseGeneralMapping(map);
((3,4), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [  ], 
[  ] ), [ (), (), (), () ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# IsomorphismSemigroups: fail (non-regular RZMS)
gap> R := ReesZeroMatrixSemigroup(Group([()]), [[00], [(), ()]]);
<Rees 0-matrix semigroup 2x2 over Group(())>
gap> S := ReesZeroMatrixSemigroup(Group([(12)]), [[(), ()], [(), (12)]]);
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
gap> IsomorphismSemigroups(R, S);
fail

# IsomorphismSemigroups: fail (different dimensions)
gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), ()]]);;
gap> S := ReesZeroMatrixSemigroup(Group([()]), [[()], [()]]);;
gap> IsomorphismSemigroups(R, S);
fail

# IsomorphismSemigroups: from RZMS to itself
gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), ()]]);;
gap> map := IsomorphismSemigroups(R, R);
((), IdentityMapping( Group( [ () ] ) ), [ (), (), () ])
gap> BruteForceIsoCheck(map);
true
gap> ForAll(R, x -> x = x ^ map);
true
gap> BruteForceInverseCheck(map);
true

# IsomorphismSemigroups: fail (non-isomorphic groups)
gap> R := ReesZeroMatrixSemigroup(Group([(1234)]), [[(), ()]]);;
gap> S := ReesZeroMatrixSemigroup(Group([(12), (34)]), [[(), ()]]);;
gap> IsomorphismSemigroups(R, S);
fail

# IsomorphismSemigroups: fail (non-isomorphic graphs)
gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), ()], [(), ()]]);;
gap> S := ReesZeroMatrixSemigroup(Group([()]), [[(), 0], [(), ()]]);;
gap> IsomorphismSemigroups(R, S);
fail

# IsomorphismSemigroups: fail (no map found)
gap> mat1 := [[(), ()], [(), ()]];;
gap> mat2 := [[(), ()], [(), (12)]];;
gap> R1 := ReesZeroMatrixSemigroup(Group((12)), mat1);;
gap> R2 := ReesZeroMatrixSemigroup(Group((12)), mat2);;
gap> IsomorphismSemigroups(R1, R2);
fail

# IsomorphismSemigroups: non-trivial isomorphism 1/2
gap> R := ReesZeroMatrixSemigroup(Group([(12)]), [[(), 0], [0, ()]]);;
gap> S := ReesZeroMatrixSemigroup(Group([(12)]), [[0, ()], [(12), 0]]);;
gap> map := IsomorphismSemigroups(R, S);
((3,4), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ), 
[ (1,2) ], [ (1,2) ] ), [ (), (), (1,2), () ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := InverseGeneralMapping(map);
((3,4), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ), 
[ (1,2) ], [ (1,2) ] ), [ (), (), (), (1,2) ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# IsomorphismSemigroups: non-trivial isomorphism 2/2
gap> S := ReesZeroMatrixSemigroup(Group([(123), (12)]),
>                                 [[0, (123)], [(132), ()]]);;
gap> R := ReesZeroMatrixSemigroup(Group([(123), (12)]),
>                                 [[(13), (12)], [0, (23)]]);;
gap> map := IsomorphismSemigroups(R, S);
((3,4), GroupHomomorphismByImages( Group( [ (1,2,3), (1,2) ] ), Group( 
[ (1,2,3), (1,2) ] ), [ (1,2,3), (1,2) ], [ (1,2,3), (1,2) ] ), 
[ (), (1,2,3), (2,3), (1,2) ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := InverseGeneralMapping(map);
((3,4), GroupHomomorphismByImages( Group( [ (1,2,3), (1,2) ] ), Group( 
[ (1,2,3), (1,2) ] ), [ (1,2,3), (1,2) ], [ (1,2,3), (1,2) ] ), 
[ (), (1,3,2), (1,2), (2,3) ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# SEMIGROUPS.RZMStoRZMSInducedFunction: error, 1/1
gap> R := ReesZeroMatrixSemigroup(Group([(12)]), [[(), 0], [0, ()]]);;
gap> SEMIGROUPS.RZMStoRZMSInducedFunction(R, R, fail, fail, [1]);
Error, the 5th argument (a list) must have length 2, but found 1

# \=: RMS and RMS elements
gap> R := RectangularBand(IsReesMatrixSemigroup, 22);
<Rees matrix semigroup 2x2 over Group(())>
gap> G := AutomorphismGroup(R);
<automorphism group of <Rees matrix semigroup 2x2 over Group(())> with 
3 generators>
gap> G.1 = G.1;
true
gap> G.1 = G.2;
false
gap> One(G) = One(G.1);
true

# \=: RMS and RMS elements
gap> R := RectangularBand(IsReesMatrixSemigroup, 22);
<Rees matrix semigroup 2x2 over Group(())>
gap> S := RectangularBand(IsReesMatrixSemigroup, 22);
<Rees matrix semigroup 2x2 over Group(())>
gap> G := AutomorphismGroup(R); H := AutomorphismGroup(S);
<automorphism group of <Rees matrix semigroup 2x2 over Group(())> with 
3 generators>
<automorphism group of <Rees matrix semigroup 2x2 over Group(())> with 
3 generators>
gap> G.1 = H.1;
false
gap> G.1 * G.2;
((3,4), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [ () ], 
[ () ] ), [ (), (), (), () ])
gap> R.1 ^ G.1;
(1,(),1)
gap> ImagesElm(G.2, R.1);
[ (1,(),2) ]
gap> G.1 ^ -1;
((), IdentityMapping( Group( [ () ] ) ), [ (), (), (), () ])
gap> IsOne(G.1);
true
gap> IsOne(One(G.1 * G.2));
true
gap> IsOne(G.1 * G.2);
false
gap> Print(G.2); true;
RMSIsoByTriple ( ReesMatrixSemigroup( Group( [ () ] ), 
[ [ (), () ], [ (), () ] ] ), ReesMatrixSemigroup( Group( [ () ] ), 
[ [ (), () ], [ (), () ] ] ), [(3,4), GroupHomomorphismByImages( Group( 
[ () ] ), Group( [ () ] ), [ () ], [ () ] ), [ (), (), (), () ]])true
gap> PreImagesRepresentative(G.2, R.1);
(1,(),2)
gap> G.1 ^ -1;
IdentityMapping( <Rees matrix semigroup 2x2 over Group(())> )

# \=: RZMS and RZMS elements 1/2
gap> R := ReesZeroMatrixSemigroup(Group([(123)]),
> [[(123), 0], [0, (123)]]);;
gap> G := AutomorphismGroup(R);;
gap> Length(GeneratorsOfSemigroup(G));
5
gap> map := RZMSIsoByTriple(R, R,
> [(12)(34), IdentityMapping(Group((123))), [(), (), (), ()]]);
((1,2)(3,4), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (), (), () ])
gap> map in G;
true
gap> CompositionMapping2(G.1, G.2);
((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (1,3,2), (), (1,3,2) ])
gap> R.1 ^ G.1;
(1,(),1)
gap> G.1 ^ -1;
((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (), (), () ])
gap> IsOne(G.1);
true
gap> IsOne(One(G.1 * G.2));
true
gap> Print(G.1); true;
IdentityMapping( ReesZeroMatrixSemigroup( Group( [ (1,2,3) ] ), 
[ [ (1,2,3), 0 ], [ 0, (1,2,3) ] ] ) )true

# \=: RZMS and RZMS elements 2/2
gap> R := ReesZeroMatrixSemigroup(Group([(123)]),
> [[(123), 0], [0, (123)]]);;
gap> G := AutomorphismGroup(R);;
gap> Length(GeneratorsOfSemigroup(G));
5
gap> S := ReesZeroMatrixSemigroup(Group([(123), (12)]),
> [[0, (123)], [(132), ()]]);;
gap> H := AutomorphismGroup(S);;
gap> Length(GeneratorsOfSemigroup(H));
4
gap> G.1 = H.1;
false
gap> CompositionMapping2(G.1, G.2);
((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (1,3,2), (), (1,3,2) ])
gap> R.1 ^ G.1;
(1,(),1)
gap> G.1 ^ -1;
((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (), (), () ])
gap> IsOne(G.1);
true
gap> IsOne(One(G.1 * G.2));
true
gap> Print(G.1); true;
IdentityMapping( ReesZeroMatrixSemigroup( Group( [ (1,2,3) ] ), 
[ [ (1,2,3), 0 ], [ 0, (1,2,3) ] ] ) )true
gap> PreImagesRepresentative(G.2, R.1);
(1,(),1)
gap> ImagesElm(G.2, R.1);
[ (1,(),1) ]

# Issue #167 (part 1), problem with IsomorphismSemigroups for RMS and RZMS
# when one of the arguments was did not satisfy IsWholeFamily
gap> R := ReesMatrixSemigroup(Group(()), [[(), ()], [(), ()]]);;
gap> W := Semigroup(RMSElement(R, 2, (), 2));;
gap> S := ReesMatrixSemigroup(Group(()), [[()]]);;
gap> IsTrivial(S) and IsTrivial(W);
true
gap> map := IsomorphismSemigroups(S, S);
((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
gap> map := IsomorphismSemigroups(W, W);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := IsomorphismSemigroups(W, S);
CompositionMapping( ((), GroupHomomorphismByImages( Group( [ () ] ), Group( 
[ () ] ), [  ], [  ] ), [ (), () ]), 
<Rees matrix semigroup 1x1 over Group(())> -> 
<Rees matrix semigroup 1x1 over Group(())> )
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := IsomorphismReesMatrixSemigroup(W);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> WW := Range(map);
<Rees matrix semigroup 1x1 over Group(())>
gap> map := IsomorphismSemigroups(S, WW);
((), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [  ], 
[  ] ), [ (), () ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := IsomorphismSemigroups(WW, S);
((), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [  ], 
[  ] ), [ (), () ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> IsReesMatrixSemigroup(W);
true
gap> map := IsomorphismSemigroups(W, W);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := IsomorphismSemigroups(S, W);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := IsomorphismSemigroups(W, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# IsomorphismSemigroups, for RMS where an argument is not WholeFamily
gap> R := ReesMatrixSemigroup(SymmetricGroup(4),
>                             [[(12), (14), (143)],
>                              [(12), (), (24)],
>                              [(12), (142), (132)]]);;
gap> U := Semigroup([RMSElement(R, 1, (124), 2),
>                    RMSElement(R, 3, (14), 2)]);;
gap> UU := Semigroup([RMSElement(R, 2, (), 2)]);;
gap> G := SymmetricGroup(IsPcGroup, 3);;
gap> V := ReesMatrixSemigroup(G, [[G.1, G.2 ^ 2]]);;
gap> G := Group([[[010],
>                 [100],
>                 [001]],
>                [[010],
>                 [001],
>                 [100]]]);;
gap> id := Identity(G);;
gap> S := ReesMatrixSemigroup(G, [[id, id, id, id],
>                                 [id, id, id, id],
>                                 [id, id, id, id]]);;
gap> W := ReesMatrixSubsemigroup(S, [34], G, [2]);;
gap> ForAll([U, UU, V, W, R, S], IsReesMatrixSemigroup);
true
gap> ForAll([U, UU, V, W, R, S], IsCompletelySimpleSemigroup);
true

# IsomorphismClasses: [U, V, W], [R], [UU], [S]
gap> IsomorphismSemigroups(U, UU);
fail
gap> IsomorphismSemigroups(UU, U);
fail
gap> iso := IsomorphismSemigroups(U, U);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> iso := IsomorphismSemigroups(U, V);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> iso := IsomorphismSemigroups(U, W);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> IsomorphismSemigroups(U, R);
fail
gap> IsomorphismSemigroups(U, S);
fail
gap> iso := IsomorphismSemigroups(V, U);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> iso := IsomorphismSemigroups(V, V);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> iso := IsomorphismSemigroups(V, W);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> IsomorphismSemigroups(V, R);
fail
gap> IsomorphismSemigroups(V, S);
fail
gap> iso := IsomorphismSemigroups(W, U);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> iso := IsomorphismSemigroups(W, V);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> iso := IsomorphismSemigroups(W, W);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> IsomorphismSemigroups(W, R);
fail
gap> IsomorphismSemigroups(W, S);
fail
gap> IsomorphismSemigroups(R, U);
fail
gap> IsomorphismSemigroups(R, V);
fail
gap> IsomorphismSemigroups(R, W);
fail
gap> iso := IsomorphismSemigroups(R, R);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> IsomorphismSemigroups(R, S);
fail
gap> IsomorphismSemigroups(S, U);
fail
gap> IsomorphismSemigroups(S, V);
fail
gap> IsomorphismSemigroups(S, W);
fail
gap> IsomorphismSemigroups(S, R);
fail
gap> iso := IsomorphismSemigroups(S, S);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true

# IsomorphismSemigroups, for RZMS where an argument is not WholeFamily
gap> true;;

# Issue #167 (part 2)
gap> G1 := SymmetricGroup(IsPermGroup, 2);;
gap> R1 := ReesMatrixSemigroup(G1, [[Identity(G1)]]);;
gap> G2 := SymmetricGroup(IsPcGroup, 2);;
gap> R2 := ReesMatrixSemigroup(G2, [[Identity(G2)]]);;
gap> map := IsomorphismSemigroups(R1, R2);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := InverseGeneralMapping(map);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# Issue #167 (part 3)
gap> R := ReesMatrixSemigroup(Group(()), [[()]]);
<Rees matrix semigroup 1x1 over Group(())>
gap> iso := IsomorphismSemigroups(R, R);
((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
gap> inv := InverseGeneralMapping(iso);
((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
gap> Representative(R) ^ inv;
(1,(),1)

# Issue #167 (part 4)
gap> G1 := Group([(24), (12)]);;
gap> mat1 := [[(12), (24)]];;
gap> R1 := ReesMatrixSemigroup(G1, mat1);;
gap> G2 := Group([(12)(36)(45), (135)(246)]);;
gap> mat2 := [[(12)(36)(45), (153)(264)]];;
gap> R2 := ReesMatrixSemigroup(G2, mat2);;
gap> map := IsomorphismSemigroups(R1, R2);
((), GroupHomomorphismByImages( Group( [ (2,4), (1,2) ] ), Group( 
[ (1,2)(3,6)(4,5), (1,3,5)(2,4,6) ] ), [ (2,4), (1,2) ], 
[ (1,2)(3,6)(4,5), (1,4)(2,3)(5,6) ] ), [ (), (1,4)(2,3)(5,6), (1,3,5)(2,4,6
 ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := InverseGeneralMapping(map);
((), GroupHomomorphismByImages( Group( [ (1,2)(3,6)(4,5), (1,3,5)(2,4,6
 ] ), Group( [ (2,4), (1,2) ] ), [ (1,2)(3,6)(4,5), (1,4)(2,3)(5,6) ], 
[ (2,4), (1,2) ] ), [ (), (1,2), (1,4,2) ])
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# Issue #167 (part 5)
gap> R := ReesMatrixSemigroup(Group(()), [[(), ()], [(), ()]]);;
gap> W := Semigroup(RMSElement(R, 2, (), 2));;
gap> S := ReesMatrixSemigroup(Group(()), [[()]]);;
gap> norm := InverseGeneralMapping(IsomorphismReesMatrixSemigroup(W));;
gap> iso := IsomorphismSemigroups(S, Source(norm));;
gap> comp := CompositionMapping(norm, iso);;
gap> inv := InverseGeneralMapping(comp);;
gap> Representative(S) ^ comp = Representative(W);
true
gap> Representative(W) ^ inv;
(1,(),1)

# Check inverses work
gap> R := ReesZeroMatrixSemigroup(Group([()]),
> [[(), 0, (), 0], [0, (), 0, ()]]);;
gap> A := AutomorphismGroup(R);
<automorphism group of <Rees 0-matrix semigroup 4x2 over Group(())> with 
3 generators>
gap> Size(A);
8
gap> ForAll(A, x -> x * x ^ -1 = One(A));
true
gap> ForAll(A, x -> x ^ -1 * x = One(A));
true
gap> ForAll(A, BruteForceIsoCheck);
true
gap> ForAll(A, BruteForceInverseCheck);
true

# Errors in checked version of RMSIsoByTriple
gap> g := SymmetricGroup(4);;
gap> mat := [[(13), (12)(34)],
>            [(1432), ()],
>            [(13)(24), (1342)]];;
gap> R := ReesMatrixSemigroup(g, mat);;
gap> S := ReesMatrixSemigroup(Group((12)), [[()]]);;
gap> auto := IdentityMapping(g);;
gap> g_elms_list := [(), (13), (), (), ()];;
gap> RMSIsoByTriple(R, S, [(), auto, g_elms_list]);
Error, the 1st and 2nd arguments (Rees matrix semigroups) have different numbe\
rs of rows and columns
gap> RMSIsoByTriple(R, R, [42, auto, g_elms_list]);
Error, the 1st entry in the 3rd argument (a triple) is not a permutation
gap> RMSIsoByTriple(R, R, [(17), auto, g_elms_list]);
Error, the 1st entry (a permutation) in the 3rd argument (a triple) is not a p\
ermutation on [1 .. 5]
gap> RMSIsoByTriple(R, R, [(14), auto, g_elms_list]);
Error, the 1st entry (a permutation) in the 3rd argument (a triple) maps rows \
to columns
gap> RMSIsoByTriple(R, R, [(), fail, g_elms_list]);
Error, the 2nd entry in the 3rd argument (a triple) is not an isomorphism betw\
een the underlying groups of the 1st and 2nd arguments (Rees matrix semigroups\
)
gap> RMSIsoByTriple(R, R, [(), auto, [(), (), ()]]);
Error, the 3rd entry (a list) in the 3rd argument (a triple)does not have leng\
th equal to the number of rows and columns of the 1st argument (a Rees matrix \
semigroup)
gap> RMSIsoByTriple(R, R, [(), auto, [4243444546]]);
Error, the 3rd entry (a list) in the 3rd argument (a triple) does not consist \
of elements of the underlying group of the 2nd argument (a Rees matrix semigro\
up)
gap> RMSIsoByTriple(R, R, [(), auto, g_elms_list]);
Error, the 3rd entry (a list) in the 3rd argument (a triple) does not define a\
n isomorphism
gap> iso := RMSIsoByTripleNC(R, R, [(), auto, g_elms_list]);;
gap> BruteForceIsoCheck(iso);
false
gap> g_elms_list := [(), (), (), (), ()];;
gap> iso := RMSIsoByTriple(R, R, [(), auto, g_elms_list]);
((), IdentityMapping( SymmetricGroup( [ 1 .. 4 ] ) ), [ (), (), (), (), () ])
gap> BruteForceIsoCheck(iso);
true

# Errors in checked version of RZMSIsoByTriple
gap> g := SymmetricGroup(3);;
gap> mat := [[00, (13)], [(123), (), (23)], [00, ()]];;
gap> R := ReesZeroMatrixSemigroup(g, mat);;
gap> S := ReesZeroMatrixSemigroup(Group((12)), [[()]]);;
gap> auto := IdentityMapping(g);;
gap> g_elms_list := [(), (13), (), (), (), ()];;
gap> RZMSIsoByTriple(R, S, [(), auto, g_elms_list]);
Error, the 1st and 2nd arguments (Rees 0-matrix semigroups) have different num\
bers of rows and columns
gap> RZMSIsoByTriple(R, R, [42, auto, g_elms_list]);
Error, the 1st entry in the 3rd argument (a triple) is not a permutation
gap> RZMSIsoByTriple(R, R, [(13), auto, g_elms_list]);
Error, the 1st entry in the 3rd argument (a triple) is not an isomorphism from\
 the graph of the 1st argument (a Rees 0-matrix semigroup) and the graph of th\
2nd argument (a Rees 0-matrix semigroup)
gap> RZMSIsoByTriple(R, R, [(), fail, g_elms_list]);
Error, the 2nd entry in the 3rd argument (a triple) is not an isomorphism betw\
een the underlying groups of the 1st and 2nd arguments (Rees 0-matrix semigrou\
ps)
gap> RZMSIsoByTriple(R, R, [(), auto, [(), (), ()]]);
Error, the 3rd entry (a list) in the 3rd argument (a triple)does not have leng\
th equal to the number of rows and columns of the 1st argument (a Rees 0-matri\
x semigroup)
gap> RZMSIsoByTriple(R, R, [(), auto, [414243444546]]);
Error, the 3rd entry (a list) in the 3rd argument (a triple) does not consist \
of elements of the underlying group of the 2nd argument (a Rees 0-matrix semig\
roup)
gap> RZMSIsoByTriple(R, R, [(), auto, g_elms_list]);
Error, the 3rd entry (a list) in the 3rd argument (a triple) does not define a\
n isomorphism
gap> iso := RZMSIsoByTripleNC(R, R, [(), auto, g_elms_list]);;
gap> BruteForceIsoCheck(iso);
false
gap> g_elms_list := [(), (), (), (), (), ()];;
gap> iso := RZMSIsoByTriple(R, R, [(), auto, g_elms_list]);
((), IdentityMapping( SymmetricGroup( [ 1 .. 3 ] ) ), 
[ (), (), (), (), (), () ])
gap> BruteForceIsoCheck(iso);
true

# IsomorphismSemigroups, for RMS
gap> G := CyclicGroup(6);;
gap> R := ReesMatrixSemigroup(G, [[One(G)]]);;
gap> S := ReesMatrixSemigroup(SymmetricGroup(3), [[()]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> R := ReesMatrixSemigroup(FullTransformationSemigroup(2),
>                             [[IdentityTransformation]]);;
gap> S := ReesMatrixSemigroup(FullTransformationSemigroup(3),
>                             [[IdentityTransformation]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> R := ReesMatrixSemigroup(Group((12)), [[(), ()], [(), ()]]);;
gap> S := ReesMatrixSemigroup(Group((12)), [[(), ()], [(), (12)]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> G := PcGroupCode(256);;
gap> H := PcGroupCode(16);;
gap> R := ReesMatrixSemigroup(G, [[One(G)]]);;
gap> S := ReesMatrixSemigroup(H, [[One(H)]]);;
gap> T := ReesMatrixSemigroup(SymmetricGroup(3), [[()]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> IsomorphismSemigroups(T, S);
fail
gap> map := IsomorphismSemigroups(T, R);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := IsomorphismSemigroups(R, T);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# IsomorphismSemigroups, for RZMS
gap> G := CyclicGroup(6);;
gap> R := ReesZeroMatrixSemigroup(G, [[One(G)]]);;
gap> S := ReesZeroMatrixSemigroup(SymmetricGroup(3), [[()]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> R := ReesZeroMatrixSemigroup(FullTransformationSemigroup(2),
>                                 [[IdentityTransformation]]);;
gap> S := ReesZeroMatrixSemigroup(FullTransformationSemigroup(3),
>                                 [[IdentityTransformation]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> R := ReesZeroMatrixSemigroup(Group((12)), [[(), ()], [(), ()]]);;
gap> S := ReesZeroMatrixSemigroup(Group((12)), [[(), ()], [(), (12)]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> G := PcGroupCode(256);;
gap> H := PcGroupCode(16);;
gap> R := ReesZeroMatrixSemigroup(G, [[One(G)]]);;
gap> S := ReesZeroMatrixSemigroup(H, [[One(H)]]);;
gap> T := ReesZeroMatrixSemigroup(SymmetricGroup(3), [[()]]);;
gap> IsomorphismSemigroups(R, S);
fail
gap> IsomorphismSemigroups(T, S);
fail
gap> map := IsomorphismSemigroups(T, R);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> map := IsomorphismSemigroups(R, T);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
gap> G := CyclicGroup(IsPcGroup, 5);;
gap> R := ReesZeroMatrixSemigroup(G, [[One(G), 0], [One(G), One(G)]]);;
gap> S := ReesZeroMatrixSemigroup(G, [[One(G), One(G)], [0, One(G)]]);;
gap> map := IsomorphismSemigroups(R, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true

# IsomorphismRees(Zero)MatrixSemigroupOverPermGroup
gap> S := FullTransformationMonoid(3);;
gap> IsomorphismReesMatrixSemigroupOverPermGroup(S);
Error, the argument is not a finite simple semigroup
gap> IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);
Error, the argument is not a finite 0-simple semigroup
gap> G := SymmetricGroup(2);;
gap> R := ReesMatrixSemigroup(G, [[G.1, G.1]]);
<Rees matrix semigroup 2x1 over Sym( [ 1 .. 2 ] )>
gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(R);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> S := Semigroup(Representative(R));;
gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(S);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> G := DihedralGroup(8);;
gap> R := ReesMatrixSemigroup(G, [[G.1, G.1]]);
<Rees matrix semigroup 2x1 over <pc group of size 8 with 3 generators>>
gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(R);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> S := Semigroup(Representative(R));;
gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(S);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> G := SymmetricGroup(2);;
gap> R := ReesZeroMatrixSemigroup(G, [[(), 00], [0, (), 0], [00, ()]]);
<Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 2 ] )>
gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(R);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> S := Semigroup(RMSElement(R, 2, (), 1), RMSElement(R, 1, (), 2));;
gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> G := DihedralGroup(8);;
gap> G := AsSemigroup(IsTransformationSemigroup, G);
<transformation monoid of size 8, degree 8 with 7 generators>
gap> x := IdentityTransformation;;
gap> y := Transformation([46718235]);;
gap> R := ReesZeroMatrixSemigroup(G, [[x, 00], [0, x, 0], [00, x]]);
<Rees 0-matrix semigroup 3x3 over <transformation monoid of size 8, degree 8 
  with 7 generators>>
gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(R);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> S := Semigroup(RMSElement(R, 1, x, 2), RMSElement(R, 2, x, 1));;
gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> R := ReesZeroMatrixSemigroup(G, [[y, 00], [0, y, 0], [00, y]]);
<Rees 0-matrix semigroup 3x3 over <transformation group of size 8
  degree 8 with 7 generators>>
gap> S := Semigroup(RMSElement(R, 1, x, 2), RMSElement(R, 2, x, 1));;
gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true
gap> S := Semigroup(MinimalIdeal(FullTransformationMonoid(5)));;
gap> IsomorphismReesMatrixSemigroupOverPermGroup(S);;
gap> BruteForceIsoCheck(iso);
true
gap> BruteForceInverseCheck(iso);
true

# CanonicalReesZeroMatrixSemigroup
gap> S := ReesZeroMatrixSemigroup(SymmetricGroup([1 .. 4]),
> [[(), (23), (234)], [(12)(34), (), (1243)],
> [(142), (13)(24), ()]]);;
gap> T := ReesZeroMatrixSemigroup(SymmetricGroup([1 .. 4]), 
> [[(1243), (243), (14)(23)], [(14), (), (13)],
> [(), (13)(24), (1342)]]);;
gap> mat := [[(), (), ()], [(14), (), (24)],
> [(), (13), (1432)]];;
gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
true
gap> Matrix(CanonicalReesZeroMatrixSemigroup(T)) = mat;
true
gap> S := ReesZeroMatrixSemigroup(Group(
> [(123), (456789101112131415161718192021,
22232425262728293031323334353637383940,
41424344454647484950515253545556575859,
60616263646566676869707172737475767778,
79808182838485868788899091929394959697,
9899100101102103104105106107108109110111112113,
114115116117118119120121122123124125126127128,
129130131132133134135136137138139140141142)]), [[(),
> (123)(4691346012551116421073398248915806,
71136621275311844109351002691178287313864,
1295512046111371022893198410751406613157122,
481133910430952186127714268133591245011541,
1063297238814795701356112652117431083499,
2590168177213763128541194511036101279218,
8397413965130561214711238103299420851176,
14167132581234911440105319622871378), (), ()],
> [(132)(4106693213497602312588511411679425,
1077033135986124126895215117804361087134,
13699622512790531611881447109723513710063,
26128915417119824581107336138101642712992,
55181208346911174371391026528130935619121,
84471011275381401036629131945720122854811,
113763914110467301329558211238649121147740,
14210568311339659221248750131157841), (), (464,
12445105268676712748108298910701305111132,
92137313354114359516761365711738981979139,
601204110122821426312344104258566612647107,
288896912950110319112721325311334941575,
1355611637971878138591194010021811416212243,
10324845651254610627878681284910930901171,
131521123393147413455115369617771375811839,
99208014061121421022383), 0]]);;
gap> mat := [[0, (), (), ()],
> [(),  (),  (496491419447139924513790431358841,
133863913184371298235127803312578311237629,
121742711972251177023115682111366191116417,
1096215107601310558111035691015479952597,
501429548140934613891441368942134874013285,
381308336128813412679321247730122752812073,
261187124116692211467201126518110631610861,
14106591210457101025581005369851), (123)(4,
142141140139138137136135134133132131130129128,
127126125124123122121120119118117116115114113,
112111110109108107106105104103102101100999897,
96959493929190898887868584838281807978,
77767574737271706968676665646362616059,
58575655545352515049484746454443424140,
39383736353433323130292827262524232221,
201918171615141312111098765)]];;
gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
true
gap> S := ReesZeroMatrixSemigroup(Group([(1234)]), [[(), (1234), 
> (1234), (13)(24), 0], [0, (), (1234), (), ()], [0, (), (), (1,
234), ()], [(1432), (1432), 0, (), (13)(24)], [00, (1,
432), (13)(24), ()]]);;
gap> mat := [[(), 00, (), ()], [0, (), (), (1432), (1234)],
> [(), (), (1234), (), 0], [(13)(24), 0, (), (), ()],
> [(), 0, (13)(24), (1234), (1432)]];;
gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
true
gap> T := CanonicalReesZeroMatrixSemigroup(S);;
gap> mat = Matrix(T);
true
gap> UnderlyingSemigroup(S) = UnderlyingSemigroup(T);
true
gap> S := ReesZeroMatrixSemigroup(AlternatingGroup([1 .. 5]),
> [[(), 0], [(134), (245)], [(152), (15243)]]);;
gap> mat := [[0, ()], [(), ()], [(), (154)]];;
gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
true
gap> T := CanonicalReesZeroMatrixSemigroup(S);;
gap> mat = Matrix(T);
true
gap> UnderlyingSemigroup(S) = UnderlyingSemigroup(T);
true

# CanonicalReesMatrixSemigroup
gap> S := ReesMatrixSemigroup(Group([(12), (34)]), 
> [[(), (), (34), (), ()], [(), (34), (), (34), (12)], [(), (12), (3,
4), (), ()], [(12)(34), (34), (), (), ()], [(), (12), (12)(34),
> (), ()]]);;
gap> mat := [[(), (), (), (), ()], [(), (), (), (), (12)],
> [(), (), (), (12), ()], [(), (34), (12)(34), (), (12)],
> [(), (), (34), (12)(34), (34)]];;
gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
true
gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
true
gap> S := ReesMatrixSemigroup(AlternatingGroup([1 .. 5]),
> [[(), (), (15423)], [(154), (13254), ()], [(), (), (12,
345)], [(), (), ()]]);;
gap> mat :=
> [[(), (), ()], [(), (), (14)(25)], [(), (), (13542)],
> [(), (134), (135)]];;
gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
true
gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
true

# CanonicalX error messages
gap> G := Semigroup([Transformation([21])]);;
gap> mat := [[IdentityTransformation, IdentityTransformation,
> IdentityTransformation], [IdentityTransformation, IdentityTransformation,
> Transformation([21])]];;
gap> S := ReesZeroMatrixSemigroup(G, mat);;
gap> CanonicalReesZeroMatrixSemigroup(S);
Error, the underlying semigroup of the argument (a Rees 0-matrix semigroup) is\
 not a group
gap> S := ReesMatrixSemigroup(G, mat);;
gap> CanonicalReesMatrixSemigroup(S);
Error, the underlying semigroup of the argument (a Rees 0-matrix semigroup) is\
 not a group

#
gap> SEMIGROUPS.StopTest();
gap> STOP_TEST("Semigroups package: standard/attributes/isorms.tst");

[Dauer der Verarbeitung: 0.38 Sekunden, vorverarbeitet 2026-06-17]