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

Quelle  semieunit.tst   Sprache: unbekannt

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

#############################################################################
##
#W  standard/semigroups/semieunit.tst
#Y  Copyright (C) 2016-2022                            Christopher Russell
##
##  Licensing information can be found in the README file of this package.
##
#############################################################################
##

#@local G, G1, G2, G3, M, M1, M2, M3, M4, M5, M6, M7, Mps, S, S1, S2, T, act
#@local attr, cov, elms, gr, iso, ps, s, str, x, x1, x2, x3, x4, y, y1, y2, y3
#@local y4
gap> START_TEST("Semigroups package: standard/semigroups/semieunit.tst");
gap> LoadPackage("semigroups", false);;

# Set info levels and user preferences
gap> SEMIGROUPS.StartTest();

#  McAlisterTripleSemigroup
gap> G := SymmetricGroup([2 .. 5]);;
gap> x := Digraph([[1], [12], [13], [14], [15]]);;
gap> y := Digraph([[1], [12], [13], [14]]);;
gap> M := McAlisterTripleSemigroup(G, x, y, OnPoints);
<McAlister triple semigroup over Sym( [ 2 .. 5 ] )>
gap> IsIsomorphicSemigroup(M, McAlisterTripleSemigroup(G, x, [1234],
> OnPoints));
true
gap> IsIsomorphicSemigroup(M, McAlisterTripleSemigroup(G, x, y));
true
gap> IsIsomorphicSemigroup(M, McAlisterTripleSemigroup(G, x, [1234]));
true
gap> M = McAlisterTripleSemigroup(G, x, [1234], OnPoints);
false
gap> M = Semigroup(Elements(M));
true
gap> M1 := Semigroup(GeneratorsOfSemigroup(M));;
gap> M = M1;
true
gap> M = Semigroup(Elements(M)[2]);
false
gap> M1 := M;;
gap> M = M1;
true
gap>  String(M) = "McAlisterTripleSemigroup(SymmetricGroup( [ 2 .. 5 ] ), \
> DigraphFromDigraph6String(\"&D`acg_\"), [ 1 .. 4 ])";
true
gap> s := "";;
gap> str := OutputTextString(s, false);;
gap> PrintTo(str, M);
gap> CloseStream(str);
gap> String(M) = "McAlisterTripleSemigroup(SymmetricGroup( [ 2 .. 5 ] ), \
> DigraphFromDigraph6String(\"&D`acg_\"), [ 1 .. 4 ])";
true

#  McAlisterTripleSemigroup with bad inputs
gap> G1 := FreeGroup(1);;
gap> act := function(x, g) return x; end;;
gap> McAlisterTripleSemigroup(G1, Digraph([[1]]), [1], act);
Error, the 1st argument (a group) is not finite
gap> x1 := Digraph([[1], [1], [3], [3], [135]]);;
gap> G1 := AutomorphismGroup(x1);;
gap> McAlisterTripleSemigroup(G1, x1, [125]);;
Error, the 2nd argument (a digraph) must be a partial order digraph
gap> x1 := Digraph([[1], [12], [3], [34], [135], [1356]]);;
gap> McAlisterTripleSemigroup(G, x1, x1);;
Error, the 1st argument (a group) must act by order automorphisms on the 2nd a\
rgument (a partial order digraph)
gap> y1 := Digraph([[1], [12], [3], [34], [135], [136]]);;
gap> McAlisterTripleSemigroup(Group(()), x1, y1);
Error, the 3rd argument <X> (a digraph) must be an induced subdigraph of the 2\
nd argument <Y> (a digraph) with vertex labels corresponding to the vertices o\
f <X> on which <Y> was induced
gap> G1 := SymmetricGroup([5 .. 11]);;
gap> McAlisterTripleSemigroup(G1, x, y);;
Error, Action not well-defined. See the manual section
``Action on canonical representatives''.
gap> x2 := Digraph([[1], [2], [123], [124]]);;
gap> G1 := AutomorphismGroup(x2);;
gap> McAlisterTripleSemigroup (G1, x2, x2);;
Error, the 3rd argument (a digraph) must be a join-semilattice digraph
gap> y2 := Digraph([[1]]);;
gap> SetDigraphVertexLabel(y2, 12);;
gap> McAlisterTripleSemigroup(G, x, y2);;
Error, the out-neighbours of each vertex of the 2nd argument (a digraph) which\
 is in the 3rd argument <Y> (a digraph) must contain only vertices which are i\
n <Y> - see the documentation for more details
gap> McAlisterTripleSemigroup(TrivialSubgroup(G), x, y, OnPoints);;
Error, every vertex of <X> must be in the orbit of some vertex of <X> which is\
 in <Y> - see the documentation for more detail
gap> y3 := Digraph([[1], [12], [13]]);;
gap> McAlisterTripleSemigroup(Group([(23), (45)]), x, y3, OnPoints);
Error, every vertex of <X> must be in the orbit of some vertex of <X> which is\
 in <Y> - see the documentation for more detail
gap> x3 := Digraph([[1], [2]]);;
gap> McAlisterTripleSemigroup(AutomorphismGroup(x3), x3, y2);;
Error, <act> must fix the vertex of <X> which is the minimal vertex of <Y> - s\
ee the documentation for more detail

#  IsomorphismSemigroup, AsSemigroup
gap> ps := InverseSemigroup([PartialPerm([2345], [1354]),
> PartialPerm([2345], [1453])]);;
gap> Mps := IsomorphismSemigroup(IsMcAlisterTripleSemigroup, ps);;
gap> Range(Mps);
<McAlister triple semigroup over Group([ (1,5,6)(2,3,4), (1,4)(2,6)(3,5) ])>
gap> AsSemigroup(IsMcAlisterTripleSemigroup, ps);
<McAlister triple semigroup over Group([ (1,5,6)(2,3,4), (1,4)(2,6)(3,5) ])>
gap> ps := InverseSemigroup([PartialPerm([1467], [1467]),
>   PartialPerm([2367], [2367]), PartialPerm([67], [67]),
>   PartialPerm([23567], [23567]),
>   PartialPerm([1467], [2376]),
>   PartialPerm([2367], [1476]), PartialPerm([67], [76])]);;
gap> Mps := IsomorphismSemigroup(IsMcAlisterTripleSemigroup, ps);;
gap> Range(Mps);
<McAlister triple semigroup over Group([ (1,2) ])>
gap> Elements(Range(Mps));;
gap> IsWholeFamily(Range(Mps));
true
gap> AsSemigroup(IsMcAlisterTripleSemigroup, ps);
<McAlister triple semigroup over Group([ (1,2) ])>
gap> G := Semigroup(PartialPerm([123], [231]));;
gap> iso := IsomorphismSemigroup(IsMcAlisterTripleSemigroup, G);;
gap> PartialPerm([123], [231]) ^ iso;;

#  McAlister triple subsemigroup methods
gap> S := Semigroup(Elements(Range(Mps)){[123]});
<McAlister triple subsemigroup over Group([ (1,2) ])>
gap> attr := [MTSSemilattice, MTSGroup, MTSPartialOrder, MTSAction,
> MTSActionHomomorphism, MTSUnderlyingAction, MTSComponents,
> MTSQuotientDigraph, MTSSemilatticeVertexLabelInverseMap];;
gap> M := Range(Mps);;
gap> ForAll(attr, A -> A(S) = A(M));
true
gap> s := "";;
gap> str := OutputTextString(s, false);;
gap> PrintTo(str, Semigroup(Elements(M1){[123]}));
gap> CloseStream(str);
gap>  s = 
> "Semigroup([ MTSE(McAlisterTripleSemigroup(SymmetricGroup( [ 2 .. 5 ] ), Digra\
> p\\\nhFromDigraph6String(\"&D`acg_\"), [ 1 .. 4 ]), 1, ()), MTSE(McAlisterTrip\
> leSemig\\\nroup(SymmetricGroup( [ 2 .. 5 ] ), DigraphFromDigraph6String(\"&D`a\
> cg_\"), [ 1 .\\\n. 4 ]), 1, (4,5)), MTSE(McAlisterTripleSemigroup(SymmetricGro\
> up( [ 2 .. 5 ] ),\\\n DigraphFromDigraph6String(\"&D`acg_\"), [ 1 .. 4 ]), 1, \
> (3,4)) ])";
true

#  AsSemigroup with bad input
gap> T := Semigroup([PartialPerm([1], [3]),
> PartialPerm([123], [231]), PartialPerm([13], [23])]);;
gap> AsSemigroup(IsMcAlisterTripleSemigroup, T);
Error, the 2nd argument (a semigroup) is not E-unitary

#  Other McAlisterTripleSemigroup tests
gap> G := SymmetricGroup([2 .. 5]);;
gap> x := Digraph([[1], [12], [13], [14], [15]]);;
gap> y := Digraph([[1], [12], [13], [14]]);;
gap> M := McAlisterTripleSemigroup(G, x, y, OnPoints);
<McAlister triple semigroup over Sym( [ 2 .. 5 ] )>
gap> IsIsomorphicSemigroup(M, McAlisterTripleSemigroup(G, x, x));
false
gap> IsInverseSemigroup(Semigroup(GeneratorsOfSemigroup(M)));
true
gap> elms := Enumerator(M);;
gap> String(elms[1]){[1 .. 40]};
"MTSE(McAlisterTripleSemigroup(SymmetricG"
gap> OneImmutable(M);
fail
gap> M1 := McAlisterTripleSemigroup(G, x, [12]);;
gap> OneImmutable(M1);
(2, ())
gap> x1 := DigraphFromDiSparse6String(".P__@_@_@__D_D_D__H_H_H_@DH_@DHL_@DHL_@DHLp?`abcdefghijklmno");;
gap> y1 := InducedSubdigraph(x1, [1234610111415]);;
gap> McAlisterTripleSemigroup(AutomorphismGroup(x1), x1, y1);;

#  McAlister triple semigroup elements
gap> MTSE(M, 4, (24)(35)) * MTSE(M, 4, (2534));
(1, (4,5))
gap> MTSE(M, 1, (2345)) ^ -2;
(1, (2,4)(3,5))
gap> M = MTSEParent(MTSE(M, 1, (45)));
true
gap> M = McAlisterTripleSemigroupElementParent(MTSE(M, 1, (45)));
true
gap> LeftOne(MTSE(M, 4, (24)(35))) = MTSE(M, 4, ());
true
gap> RightOne(MTSE(M, 4, (24)(35))) = MTSE(M, 2, ());
true
gap> MTSE(M, 10, (2345));
Error, the 2nd argument should be a vertex label of the join-semilattice of th\
e McAlister triple
gap> MTSE(M, 1, (56));
Error, the 3rd argument must an element of the group of the McAlister triple
gap> MTSE(M, 3, (24)(35));
Error, the arguments do not specify an element of the McAlister triple semigro\
up
gap> MTSE(M, 1, ())[3];
Error, the 2nd argument (a pos. int.) must be at most 2
gap> M1 := McAlisterTripleSemigroup(G, x, x);;
gap> MTSE(M1, 4, (24)(35)) * MTSE(M, 4, (2534));
Error, the arguments (McAlister triple elements) do not belong to the same McA\
lister triple semigroup

#  IsomorphismSemigroups
gap> x1 := Digraph([[1], [12], [13], [1234], [1235]]);;
gap> G1 := Group([(45)]);;
gap> x2 := Digraph([[1345], [2345], [35], [45], [5]]);;
gap> G2 := Group([(12)]);;
gap> M1 := McAlisterTripleSemigroup(G1, x1, [1234]);;
gap> M2 := McAlisterTripleSemigroup(G2, x2, [1345]);;
gap> IsomorphismSemigroups(M1, M2);;
gap> x3 := Digraph([[1], [12], [13], [124], [125], [136],
> [137]]);;
gap> y3 := Digraph([[1], [12], [123], [124]]);;
gap> y4 := Digraph([[1], [12], [123], [124]]);;
gap> SetDigraphVertexLabels(y3, [1376]);;
gap> SetDigraphVertexLabels(y4, [1245]);;
gap> G3 := Group([(67), (45), (23)(46)(57)]);;
gap> M3 := McAlisterTripleSemigroup(G3, x3, y3);;
gap> M4 := McAlisterTripleSemigroup(G3, x3, y4);;
gap> IsomorphismSemigroups(M3, M4);;
gap> IsomorphismSemigroups(M1, M3);
fail
gap> M5 := McAlisterTripleSemigroup(G3, x3, [12345]);;
gap> IsomorphismSemigroups(M5, M3);
fail
gap> M6 := McAlisterTripleSemigroup(Group((45)), x1, [1234]);;
gap> x4 := Digraph([[1], [12], [13], [1234]]);;
gap> M7 := McAlisterTripleSemigroup(Group((56)), x4, x4);;
gap> IsomorphismSemigroups(M6, M7);
fail

#  IsomorphismSemigroups with bad input
gap> x1 := Digraph([[1], [12], [13]]);;
gap> G := Group((23));;
gap> M1 := McAlisterTripleSemigroup(G, x1, x1);;
gap> M2 := McAlisterTripleSemigroup(G, x1, [12]);;
gap> IsomorphismSemigroups(M1, M2);
fail
gap> x1 := Digraph([[1], [12], [13]]);;
gap> x2 := Digraph([[1], [12], [13], [14]]);;
gap> M3 := McAlisterTripleSemigroup(Group((23), (234)), x2, x1);;
gap> IsomorphismSemigroups(M1, M3);
fail
gap> M4 := McAlisterTripleSemigroup(Group(()), x1, x1);;
gap> IsomorphismSemigroups(M1, M4);
fail
gap> act := function(x, g)
> return x;
> end;;
gap> M5 := McAlisterTripleSemigroup(G, x1, x1, act);;
gap> IsomorphismSemigroups(M1, M5);
fail

#  IsomorphismSemigroups, where RepresentativeAction fails
gap> gr := DigraphFromDigraph6String("+H_A?GC_Q@G~wA?G");
<immutable digraph with 9 vertices, 20 edges>
gap> G := Group((123)(456), (89));;
gap> S1 := McAlisterTripleSemigroup(G, gr, [14578]);
<McAlister triple semigroup over Group([ (1,2,3)(4,5,6), (8,9) ])>
gap> S2 := McAlisterTripleSemigroup(G, gr, [36789]);
<McAlister triple semigroup over Group([ (1,2,3)(4,5,6), (8,9) ])>
gap> IsomorphismSemigroups(S1, S2);
fail

#  IsIsomorphicSemigroup
gap> IsIsomorphicSemigroup(M1, M1);
true
gap> IsIsomorphicSemigroup(M1, M5);
false

#  IsFInverseMonoid, IsFInverseSemigroup
gap> S := Semigroup([Transformation([22]), Transformation([212]),
> Transformation([332])]);;
gap> IsFInverseMonoid(S);
false
gap> IsFInverseSemigroup(S);
false
gap> S := InverseMonoid([PartialPermNC([13], [13]),
> PartialPermNC([12], [31]), PartialPermNC([12], [32])]);;
gap> IsFInverseMonoid(S);
false
gap> S := InverseMonoid([PartialPermNC([1], [1]),
> PartialPermNC([12], [12]), PartialPermNC([123], [123])]);;
gap> IsFInverseMonoid(S);
true
gap> IsFInverseSemigroup(S);
true
gap> G := Group((23));;
gap> x := Digraph([[1], [12], [13]]);;
gap> M := McAlisterTripleSemigroup(G, x, x);;
gap> IsFInverseSemigroup(M);
true
gap> IsFInverseMonoid(M);
false
gap> M := McAlisterTripleSemigroup(Group(()), Digraph([[1], [12]]), [12]);;
gap> IsFInverseMonoid(M);
true
gap> IsFInverseSemigroup(M);
true
gap> S := McAlisterTripleSemigroup(Group((45)),
> Digraph([[1], [12], [13], [1234], [1235]]), [1 .. 4]);
<McAlister triple semigroup over Group([ (4,5) ])>
gap> IsFInverseSemigroup(S);
false

# EUnitaryInverseCover 
# TODO(later) Add checks that these covers are idempotent separating
# homomorphisms
gap> S := InverseMonoid([PartialPermNC([13], [13]),
> PartialPermNC([12], [31]), PartialPermNC([12], [32])]);;
gap> cov := EUnitaryInverseCover(S);;
gap> IsEUnitaryInverseSemigroup(Source(cov));
true
gap> S = Range(cov);
true
gap> S := Monoid([Transformation([1444]),
> Transformation([1244])]);;
gap> cov := EUnitaryInverseCover(S);;
gap> IsEUnitaryInverseSemigroup(Source(cov));
true
gap> S = Range(cov);
true
gap> S := Semigroup([Bipartition([[13, -1, -2, -3], [2]]),
> Bipartition([[13, -1, -2], [2, -3]]),
> Bipartition([[13], [2], [-1, -2, -3]]),
> Bipartition([[1, -2, -3], [23, -1]])]);;
gap> EUnitaryInverseCover(S);
Error, the argument must be an inverse semigroup
gap> S := InverseSemigroup([PartialPerm([124], [432]),
> PartialPerm([13], [34])]);;
gap> cov := EUnitaryInverseCover(S);;
gap> IsEUnitaryInverseSemigroup(Source(cov));
true
gap> S = Range(cov);
true

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

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