Quelle semirms.tst
Sprache: unbekannt
|
|
############################################################################
##
#W standard/semigroups/semirms.tst
#Y Copyright (C) 2015-2022 James D. Mitchell
## Wilf A. Wilson
## Finn Smith
##
## Licensing information can be found in the README file of this package.
##
#############################################################################
##
#@local BruteForceInverseCheck, BruteForceIsoCheck, F, G, H, I, R, RR, S, T, U
#@local a, an, b, c, comps, d, data, e, filename, first_occurrence, func, ht, i
#@local id, idems, inv, iso, map, mat, rels, x, y, z, zero
gap> START_TEST("Semigroups package: standard/semigroups/semirms.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 Source(iso) do
> for y in 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;;
# AsSemigroup:
# convert from IsPBRSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> PBR([[-1], [-5], [-1], [-1], [-5], [-5], [-1]],
> [[1, 3, 4, 7], [], [], [], [2, 5, 6], [], []]),
> PBR([[-4], [-2], [-4], [-4], [-2], [-2], [-2]],
> [[], [2, 5, 6, 7], [], [1, 3, 4], [], [], []]),
> PBR([[-3], [-6], [-3], [-3], [-6], [-6], [-3]],
> [[], [], [1, 3, 4, 7], [], [], [2, 5, 6], []])]);
<pbr semigroup of degree 7 with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsFpSemigroup to IsReesMatrixSemigroup
gap> F := FreeSemigroup(3);; AssignGeneratorVariables(F);;
gap> rels := [[s1 ^ 2, s1],
> [s1 * s3, s3],
> [s2 ^ 2, s2],
> [s3 * s1, s1],
> [s3 * s2, s1 * s2],
> [s3 ^ 2, s3],
> [s1 * s2 * s1, s1],
> [s1 * s2 * s3, s3],
> [s2 * s1 * s2, s2]];;
gap> S := F / rels;
<fp semigroup with 3 generators and 9 relations of length 34>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBipartitionSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Bipartition([[1, 3, 4, 7, -1], [2, 5, 6, -5], [-2], [-3], [-4], [-6], [-7]]),
> Bipartition([[1, 3, 4, -4], [2, 5, 6, 7, -2], [-1], [-3], [-5], [-6], [-7]]),
> Bipartition([[1, 3, 4, 7, -3], [2, 5, 6, -6], [-1], [-2], [-4], [-5], [-7]])]);
<bipartition semigroup of degree 7 with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTransformationSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Transformation([1, 5, 1, 1, 5, 5, 1]),
> Transformation([4, 2, 4, 4, 2, 2, 2]),
> Transformation([3, 6, 3, 3, 6, 6, 3])]);
<transformation semigroup of degree 7 with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBooleanMatSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsBooleanMat,
> [[true, false, false, false, false, false, false],
> [false, false, false, false, true, false, false],
> [true, false, false, false, false, false, false],
> [true, false, false, false, false, false, false],
> [false, false, false, false, true, false, false],
> [false, false, false, false, true, false, false],
> [true, false, false, false, false, false, false]]),
> Matrix(IsBooleanMat,
> [[false, false, false, true, false, false, false],
> [false, true, false, false, false, false, false],
> [false, false, false, true, false, false, false],
> [false, false, false, true, false, false, false],
> [false, true, false, false, false, false, false],
> [false, true, false, false, false, false, false],
> [false, true, false, false, false, false, false]]),
> Matrix(IsBooleanMat,
> [[false, false, true, false, false, false, false],
> [false, false, false, false, false, true, false],
> [false, false, true, false, false, false, false],
> [false, false, true, false, false, false, false],
> [false, false, false, false, false, true, false],
> [false, false, false, false, false, true, false],
> [false, false, true, false, false, false, false]])]);
<semigroup of 7x7 boolean matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMaxPlusMatrixSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsMaxPlusMatrix,
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsMaxPlusMatrix,
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsMaxPlusMatrix,
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity]])]);
<semigroup of 7x7 max-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMinPlusMatrixSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsMinPlusMatrix,
> [[0, infinity, infinity, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity, infinity]]),
> Matrix(IsMinPlusMatrix,
> [[infinity, infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity]]),
> Matrix(IsMinPlusMatrix,
> [[infinity, infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity, infinity]])]);
<semigroup of 7x7 min-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsProjectiveMaxPlusMatrix,
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity]])]);
<semigroup of 7x7 projective max-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsIntegerMatrixSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(Integers,
> [[1, 0, 0, 0, 0, 0, 0],
> [0, 0, 0, 0, 1, 0, 0],
> [1, 0, 0, 0, 0, 0, 0],
> [1, 0, 0, 0, 0, 0, 0],
> [0, 0, 0, 0, 1, 0, 0],
> [0, 0, 0, 0, 1, 0, 0],
> [1, 0, 0, 0, 0, 0, 0]]),
> Matrix(Integers,
> [[0, 0, 0, 1, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0],
> [0, 0, 0, 1, 0, 0, 0],
> [0, 0, 0, 1, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0]]),
> Matrix(Integers,
> [[0, 0, 1, 0, 0, 0, 0],
> [0, 0, 0, 0, 0, 1, 0],
> [0, 0, 1, 0, 0, 0, 0],
> [0, 0, 1, 0, 0, 0, 0],
> [0, 0, 0, 0, 0, 1, 0],
> [0, 0, 0, 0, 0, 1, 0],
> [0, 0, 1, 0, 0, 0, 0]])]);
<semigroup of 7x7 integer matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMaxPlusMatrixSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsTropicalMaxPlusMatrix,
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity]],
> 1),
> Matrix(IsTropicalMaxPlusMatrix,
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity]],
> 1),
> Matrix(IsTropicalMaxPlusMatrix,
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity]],
> 1)]);
<semigroup of 7x7 tropical max-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMinPlusMatrixSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsTropicalMinPlusMatrix,
> [[0, infinity, infinity, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity, infinity]], 3),
> Matrix(IsTropicalMinPlusMatrix,
> [[infinity, infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity, infinity]], 3),
> Matrix(IsTropicalMinPlusMatrix,
> [[infinity, infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity, infinity]],
> 3)]);
<semigroup of 7x7 tropical min-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsNTPMatrixSemigroup to IsReesMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsNTPMatrix,
> [[1, 0, 0, 0, 0, 0, 0],
> [0, 0, 0, 0, 1, 0, 0],
> [1, 0, 0, 0, 0, 0, 0],
> [1, 0, 0, 0, 0, 0, 0],
> [0, 0, 0, 0, 1, 0, 0],
> [0, 0, 0, 0, 1, 0, 0],
> [1, 0, 0, 0, 0, 0, 0]], 4, 1),
> Matrix(IsNTPMatrix,
> [[0, 0, 0, 1, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0],
> [0, 0, 0, 1, 0, 0, 0],
> [0, 0, 0, 1, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0, 0]], 4, 1),
> Matrix(IsNTPMatrix,
> [[0, 0, 1, 0, 0, 0, 0],
> [0, 0, 0, 0, 0, 1, 0],
> [0, 0, 1, 0, 0, 0, 0],
> [0, 0, 1, 0, 0, 0, 0],
> [0, 0, 0, 0, 0, 1, 0],
> [0, 0, 0, 0, 0, 1, 0],
> [0, 0, 1, 0, 0, 0, 0]], 4, 1)]);
<semigroup of 7x7 ntp matrices with 3 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x3 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPBRSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> PBR([[-4], [-5], [-3], [-1], [-2], [-1]],
> [[4, 6], [5], [3], [1], [2], []]),
> PBR([[-1], [-2], [-3], [-4], [-5], [-2]],
> [[1], [2, 6], [3], [4], [5], []]),
> PBR([[-3], [-3], [-3], [-3], [-3], [-3]],
> [[], [], [1, 2, 3, 4, 5, 6], [], [], []])]);
<pbr semigroup of degree 6 with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsFpSemigroup to IsReesZeroMatrixSemigroup
gap> F := FreeSemigroup(3);; AssignGeneratorVariables(F);;
gap> rels := [[s1 * s2, s1],
> [s1 * s3, s3],
> [s2 ^ 2, s2],
> [s2 * s3, s3],
> [s3 * s1, s3],
> [s3 * s2, s3],
> [s3 ^ 2, s3],
> [s1 ^ 3, s1],
> [s2 * s1 ^ 2, s2]];;
gap> S := F / rels;
<fp semigroup with 3 generators and 9 relations of length 32>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBipartitionSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Bipartition([[1, -4], [2, -5], [3, -3], [4, 6, -1], [5, -2], [-6]]),
> Bipartition([[1, -1], [2, 6, -2], [3, -3], [4, -4], [5, -5], [-6]]),
> Bipartition([[1, 2, 3, 4, 5, 6, -3], [-1], [-2], [-4], [-5], [-6]])]);
<bipartition semigroup of degree 6 with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 4)(2, 5)))
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 2)));
true
gap> Length(Rows(T)) = 2 and Length(Columns(T)) = 1;
true
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTransformationSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Transformation([4, 5, 3, 1, 2, 1]),
> Transformation([1, 2, 3, 4, 5, 2]),
> Transformation([3, 3, 3, 3, 3, 3])]);
<transformation semigroup of degree 6 with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 4)(2, 5)))
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 2)));
true
gap> Length(Rows(T)) = 2 and Length(Columns(T)) = 1;
true
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBooleanMatSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsBooleanMat,
> [[false, false, false, true, false, false],
> [false, false, false, false, true, false],
> [false, false, true, false, false, false],
> [true, false, false, false, false, false],
> [false, true, false, false, false, false],
> [true, false, false, false, false, false]]),
> Matrix(IsBooleanMat,
> [[true, false, false, false, false, false],
> [false, true, false, false, false, false],
> [false, false, true, false, false, false],
> [false, false, false, true, false, false],
> [false, false, false, false, true, false],
> [false, true, false, false, false, false]]),
> Matrix(IsBooleanMat,
> [[false, false, true, false, false, false],
> [false, false, true, false, false, false],
> [false, false, true, false, false, false],
> [false, false, true, false, false, false],
> [false, false, true, false, false, false],
> [false, false, true, false, false, false]])]);
<semigroup of 6x6 boolean matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMaxPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsMaxPlusMatrix,
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsMaxPlusMatrix,
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsMaxPlusMatrix,
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity]])]);
<semigroup of 6x6 max-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMinPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsMinPlusMatrix,
> [[infinity, infinity, infinity, 0, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity]]),
> Matrix(IsMinPlusMatrix,
> [[0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, infinity, 0, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity]]),
> Matrix(IsMinPlusMatrix,
> [[infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity]])]);
<semigroup of 6x6 min-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsProjectiveMaxPlusMatrix,
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity]]),
> Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity]])]);
<semigroup of 6x6 projective max-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsIntegerMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(Integers,
> [[0, 0, 0, 1, 0, 0],
> [0, 0, 0, 0, 1, 0],
> [0, 0, 1, 0, 0, 0],
> [1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0],
> [1, 0, 0, 0, 0, 0]]),
> Matrix(Integers,
> [[1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 0, 1, 0, 0],
> [0, 0, 0, 0, 1, 0],
> [0, 1, 0, 0, 0, 0]]),
> Matrix(Integers,
> [[0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0]])]);
<semigroup of 6x6 integer matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMaxPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsTropicalMaxPlusMatrix,
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [0, -infinity, -infinity, -infinity, -infinity, -infinity]], 1),
> Matrix(IsTropicalMaxPlusMatrix,
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity],
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity]], 1),
> Matrix(IsTropicalMaxPlusMatrix,
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity]], 1)]);
<semigroup of 6x6 tropical max-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMinPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsTropicalMinPlusMatrix,
> [[infinity, infinity, infinity, 0, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity],
> [0, infinity, infinity, infinity, infinity, infinity]], 3),
> Matrix(IsTropicalMinPlusMatrix,
> [[0, infinity, infinity, infinity, infinity, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, infinity, 0, infinity, infinity],
> [infinity, infinity, infinity, infinity, 0, infinity],
> [infinity, 0, infinity, infinity, infinity, infinity]], 3),
> Matrix(IsTropicalMinPlusMatrix,
> [[infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity],
> [infinity, infinity, 0, infinity, infinity, infinity]], 3)]);
<semigroup of 6x6 tropical min-plus matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsNTPMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := Semigroup([
> Matrix(IsNTPMatrix,
> [[0, 0, 0, 1, 0, 0],
> [0, 0, 0, 0, 1, 0],
> [0, 0, 1, 0, 0, 0],
> [1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0],
> [1, 0, 0, 0, 0, 0]], 4, 1),
> Matrix(IsNTPMatrix,
> [[1, 0, 0, 0, 0, 0],
> [0, 1, 0, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 0, 1, 0, 0],
> [0, 0, 0, 0, 1, 0],
> [0, 1, 0, 0, 0, 0]], 4, 1),
> Matrix(IsNTPMatrix,
> [[0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0],
> [0, 0, 1, 0, 0, 0]], 4, 1)]);
<semigroup of 6x6 ntp matrices with 3 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPBRMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> PBR([[-3], [-2], [-1]], [[3], [2], [1]]),
> PBR([[-2], [-2], [-2]], [[], [1, 2, 3], []])]);
<pbr monoid of degree 3 with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsFpMonoid to IsReesZeroMatrixSemigroup
gap> F := FreeMonoid(2);; AssignGeneratorVariables(F);;
gap> rels := [[m1 ^ 2, One(F)],
> [m1 * m2, m2],
> [m2 * m1, m2],
> [m2 ^ 2, m2]];;
gap> S := F / rels;
<fp monoid with 2 generators and 4 relations of length 13>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBipartitionMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Bipartition([[1, -3], [2, -2], [3, -1]]),
> Bipartition([[1, 2, 3, -2], [-1], [-3]])]);
<bipartition monoid of degree 3 with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 3)]))
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 2)]));
true
gap> Length(Rows(T)) = 1 and Length(Columns(T)) = 1;
true
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTransformationMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Transformation([3, 2, 1]), Transformation([2, 2, 2])]);
<transformation monoid of degree 3 with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 3)]))
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 2)]));
true
gap> Length(Rows(T)) = 1 and Length(Columns(T)) = 1;
true
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBooleanMatMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(IsBooleanMat,
> [[false, false, true], [false, true, false],
> [true, false, false]]),
> Matrix(IsBooleanMat,
> [[false, true, false],
> [false, true, false],
> [false, true, false]])]);
<monoid of 3x3 boolean matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMaxPlusMatrixMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(IsMaxPlusMatrix,
> [[-infinity, -infinity, 0],
> [-infinity, 0, -infinity],
> [0, -infinity, -infinity]]),
> Matrix(IsMaxPlusMatrix,
> [[-infinity, 0, -infinity],
> [-infinity, 0, -infinity],
> [-infinity, 0, -infinity]])]);
<monoid of 3x3 max-plus matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMinPlusMatrixMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(IsMinPlusMatrix,
> [[infinity, infinity, 0],
> [infinity, 0, infinity],
> [0, infinity, infinity]]),
> Matrix(IsMinPlusMatrix,
> [[infinity, 0, infinity],
> [infinity, 0, infinity],
> [infinity, 0, infinity]])]);
<monoid of 3x3 min-plus matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsProjectiveMaxPlusMatrixMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, -infinity, 0],
> [-infinity, 0, -infinity],
> [0, -infinity, -infinity]]),
> Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, 0, -infinity],
> [-infinity, 0, -infinity],
> [-infinity, 0, -infinity]])]);
<monoid of 3x3 projective max-plus matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsIntegerMatrixMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(Integers,
> [[0, 0, 1],
> [0, 1, 0],
> [1, 0, 0]]),
> Matrix(Integers,
> [[0, 1, 0],
> [0, 1, 0],
> [0, 1, 0]])]);
<monoid of 3x3 integer matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMaxPlusMatrixMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(IsTropicalMaxPlusMatrix,
> [[-infinity, -infinity, 0],
> [-infinity, 0, -infinity],
> [0, -infinity, -infinity]], 1),
> Matrix(IsTropicalMaxPlusMatrix,
> [[-infinity, 0, -infinity],
> [-infinity, 0, -infinity],
> [-infinity, 0, -infinity]], 1)]);
<monoid of 3x3 tropical max-plus matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMinPlusMatrixMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(IsTropicalMinPlusMatrix,
> [[infinity, infinity, 0],
> [infinity, 0, infinity],
> [0, infinity, infinity]], 3),
> Matrix(IsTropicalMinPlusMatrix,
> [[infinity, 0, infinity],
> [infinity, 0, infinity],
> [infinity, 0, infinity]], 3)]);
<monoid of 3x3 tropical min-plus matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsNTPMatrixMonoid to IsReesZeroMatrixSemigroup
gap> S := Monoid([
> Matrix(IsNTPMatrix,
> [[0, 0, 1],
> [0, 1, 0],
> [1, 0, 0]], 4, 1),
> Matrix(IsNTPMatrix,
> [[0, 1, 0],
> [0, 1, 0],
> [0, 1, 0]], 4, 1)]);
<monoid of 3x3 ntp matrices with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsFpMonoid to IsReesZeroMatrixSemigroup
gap> F := FreeMonoid(1);; AssignGeneratorVariables(F);;
gap> rels := [[m1 ^ 2, m1]];;
gap> S := F / rels;
<fp monoid with 1 generator and 1 relation of length 4>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPBRMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> PBR([[-2], [-1]], [[2], [1]])]);
<commutative pbr monoid of degree 2 with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsFpMonoid to IsReesMatrixSemigroup
gap> F := FreeMonoid(1);; AssignGeneratorVariables(F);;
gap> rels := [[m1 ^ 2, One(F)]];;
gap> S := F / rels;
<fp monoid with 1 generator and 1 relation of length 3>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBipartitionMonoid to IsReesMatrixSemigroup
gap> S := InverseMonoid([
> Bipartition([[1, -1], [2, -2]]),
> Bipartition([[1, -2], [2, -1]])]);
<block bijection group of degree 2 with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBipartitionSemigroup to IsReesMatrixSemigroup
gap> S := InverseSemigroup([
> Bipartition([[1, -1], [2, -2]]),
> Bipartition([[1, -2], [2, -1]])]);
<block bijection group of degree 2 with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBipartitionMonoid to IsReesZeroMatrixSemigroup
gap> S := InverseMonoid(Bipartition([[1, -1], [2, -2]]),
> Bipartition([[1, -2], [2, -1]]),
> Bipartition([[1, 2, -1, -2]]));
<inverse block bijection monoid of degree 2 with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBipartitionSemigroup to IsReesZeroMatrixSemigroup
gap> S := InverseSemigroup(Bipartition([[1, -1], [2, -2]]),
> Bipartition([[1, -2], [2, -1]]),
> Bipartition([[1, 2, -1, -2]]));
<inverse block bijection monoid of degree 2 with 2 generators>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPartialPermSemigroup to IsReesMatrixSemigroup
gap> S := InverseSemigroup(PartialPerm([1, 2], [2, 1]));;
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPartialPermMonoid to IsReesMatrixSemigroup
gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]));;
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPartialPermSemigroup to IsReesZeroMatrixSemigroup
gap> S := InverseSemigroup(PartialPerm([1, 2], [2, 1]),
> PartialPerm([]));;
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPartialPermMonoid to IsReesZeroMatrixSemigroup
gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
> PartialPerm([]));;
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTransformationMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Transformation([2, 1])]);
<commutative transformation monoid of degree 2 with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsBooleanMatMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(IsBooleanMat,
> [[false, true], [true, false]])]);
<commutative monoid of 2x2 boolean matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMaxPlusMatrixMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(IsMaxPlusMatrix,
> [[-infinity, 0], [0, -infinity]])]);
<commutative monoid of 2x2 max-plus matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsMinPlusMatrixMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(IsMinPlusMatrix,
> [[infinity, 0], [0, infinity]])]);
<commutative monoid of 2x2 min-plus matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsProjectiveMaxPlusMatrixMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, 0], [0, -infinity]])]);
<commutative monoid of 2x2 projective max-plus matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsIntegerMatrixMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(Integers,
> [[0, 1], [1, 0]])]);
<commutative monoid of 2x2 integer matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMaxPlusMatrixMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(IsTropicalMaxPlusMatrix,
> [[-infinity, 0], [0, -infinity]], 1)]);
<commutative monoid of 2x2 tropical max-plus matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsTropicalMinPlusMatrixMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(IsTropicalMinPlusMatrix,
> [[infinity, 0], [0, infinity]], 3)]);
<commutative monoid of 2x2 tropical min-plus matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsNTPMatrixMonoid to IsReesMatrixSemigroup
gap> S := Monoid([
> Matrix(IsNTPMatrix,
> [[0, 1], [1, 0]], 4, 1)]);
<commutative monoid of 2x2 ntp matrices with 1 generator>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsFpMonoid to IsReesMatrixSemigroup
gap> F := FreeMonoid(0);; AssignGeneratorVariables(F);;
gap> rels := [];;
gap> S := F / rels;;
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsPermGroup to IsReesMatrixSemigroup
gap> S := DihedralGroup(IsPermGroup, 4);
Group([ (1,2), (3,4) ])
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,3)(2,4), (1,4)(2,3) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsGroup to IsReesMatrixSemigroup
gap> S := DihedralGroup(4);
<pc group of size 4 with 2 generators>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group([ (1,2)(3,4), (1,3)(2,4) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsReesMatrixSemigroup to IsReesMatrixSemigroup
gap> S := ReesMatrixSemigroup(Group([(1, 2)]), [[(1, 2), (1, 2)], [(), ()]]);
<Rees matrix semigroup 2x2 over Group([ (1,2) ])>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 2x2 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsReesZeroMatrixSemigroup to IsReesZeroMatrixSemigroup
gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]),
> [[(1, 2), (1, 2)], [0, ()]]);
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from IsGraphInverseSemigroup to IsReesMatrixSemigroup
gap> S := GraphInverseSemigroup(Digraph([[]]));
<finite graph inverse semigroup with 1 vertex, 0 edges>
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
<Rees matrix semigroup 1x1 over Group(())>
gap> Size(S) = Size(T);
true
gap> NrDClasses(S) = NrDClasses(T);
true
gap> NrRClasses(S) = NrRClasses(T);
true
gap> NrLClasses(S) = NrLClasses(T);
true
gap> NrIdempotents(S) = NrIdempotents(T);
true
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
gap> BruteForceIsoCheck(map);
true
gap> BruteForceInverseCheck(map);
true
# AsSemigroup:
# convert from a free band to IsReesMatrixSemigroup
gap> S := FreeBand(1);
<free band on the generators [ x1 ]>
--> --------------------
--> maximum size reached
--> --------------------
[ Dauer der Verarbeitung: 0.59 Sekunden
(vorverarbeitet)
]
|
2026-04-02
|