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

Quelle  closure.tst   Sprache: unbekannt

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

#############################################################################
##
#W  extreme/closure.tst
#Y  Copyright (C) 2011-15                                James D. Mitchell
##
##  Licensing information can be found in the README file of this package.
##
#############################################################################
##


#@local S, T, a, acting, gens, i, s, t, x
gap> START_TEST("Semigroups package: extreme/closure.tst");
gap> LoadPackage("semigroups", false);;

#
gap> SEMIGROUPS.StartTest();

# ClosureTest1
gap> gens := [Transformation([26726115]),
>  Transformation([38145671]),
>  Transformation([43277665]),
>  Transformation([71742563])];;
gap> S := Monoid(gens[1]);; Size(S);;
gap> for i in [2 .. 4] do
> S := ClosureSemigroup(S, gens[i]); Size(S);
> od;
gap> Size(S);
233606
gap> NrRClasses(S);
4397
gap> NrLClasses(S);
16915
gap> NrDClasses(S);
662
gap> GroupOfUnits(S);
<trivial transformation group of degree 0 with 1 generator>

# ClosureTest2
gap> gens :=
> [Transformation([13931211511931919221531,
>      24151261281301321341361381401421,
>      44146148150152154156158160162164,
>      1661681701721741761781801821841,
>       861881901921941961981100110211041,
>      106110811101112111411161118112011221,
>       12411251111]),
>   Transformation([14110104117111014111164,
>      114141414141414141414141,
>       414141414141414141414141,
>       414141414141414141414141,
>       414141414141414141414141,
>       414141514111]),
>   Transformation([1551111515111515511111,
>       551515151515151515151515,
>       151515151515151515151515,
>       151515151515151515151515,
>       151515151515151515151515,
>       151515151151]),
>   Transformation([1616613118166121111623,
>       1125127129131133135137139141143,
>      1451471491511531551571591611631,
>       651671691711731751771791811831,
>       85187189191193195197199110111031,
>       105110711091111111311151117111911211,
>       123111126111]),
>   Transformation([1771114161711201416711,
>       1471147147147147147147147147147,
>      14714714714714714714714714714714,
>      7147147147147147147147147147147,
>       147147147147147147147147147147,
>       147147147147147147147147147147,
>       147147714]),
>   Transformation([1881118181181881118,
>       818181818181818181818181,
>       818181818181818181818181,
>       818181818181818181818181,
>       818181818181818181818181,
>       81818181881])];;
gap> s := Semigroup(gens[1]);;
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]);
> od;
gap> s;
<transformation semigroup of degree 126 with 6 generators>
gap> Size(s);
15853
gap> Size(Semigroup(Generators(s)));
15853
gap> NrRClasses(s);
355
gap> t := Semigroup(gens);
<transformation semigroup of degree 126 with 6 generators>
gap> NrRClasses(t);
355
gap> NrLClasses(s);
353
gap> NrLClasses(t);
353

# ClosureTest3
gap> s := Semigroup(gens[1]);; Size(s);
30
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation semigroup of size 15853, degree 126 with 6 generators>
gap> Size(s);
15853
gap> Size(Semigroup(Generators(s)));
15853
gap> NrRClasses(s);
355
gap> t := Semigroup(gens);
<transformation semigroup of degree 126 with 6 generators>
gap> NrRClasses(t);
355
gap> NrLClasses(s);
353
gap> NrLClasses(t);
353

# ClosureTest4
gap> gens := [Transformation([1110987654321]),
>  Transformation([23456789101110]),
>  Transformation([234567878910]),
>  Transformation([432345678910]),
>  Transformation([234567678910]),
>  Transformation([12345678789]),
>  Transformation([43212345678]),
>  Transformation([65432345678]),
>  Transformation([12345654567]),
>  Transformation([456787678910]),
>  Transformation([45678987654])];;
gap> s := Semigroup(gens[1]);;
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation semigroup of size 6996, degree 11 with 11 generators>
gap> Size(s);
6996
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
512
392
46
423
gap> t := Semigroup(gens);
<transformation semigroup of degree 11 with 11 generators>
gap> NrRClasses(t); NrLClasses(t); NrDClasses(t); NrIdempotents(t);
512
392
46
423

# ClosureTest5
gap> s := Semigroup(gens[1]);;
gap> s := ClosureSemigroup(s, gens[2]);;
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation semigroup of size 6996, degree 11 with 11 generators>
gap> Size(s);
6996
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
512
392
46
423
gap> t := Semigroup(gens);
<transformation semigroup of degree 11 with 11 generators>
gap> NrRClasses(t); NrLClasses(t); NrDClasses(t); NrIdempotents(t);
512
392
46
423

# ClosureTest6
gap> gens := [Transformation([34121]),
>   Transformation([42155]),
>   Transformation([42224])];;
gap> s := Monoid(gens[1], gens[2]);
<transformation monoid of degree 5 with 2 generators>
gap> s := ClosureSemigroup(s, gens[3]);
<transformation monoid of degree 5 with 3 generators>
gap> Size(s);
732
gap> IsRegularSemigroup(s);
true
gap> MultiplicativeZero(s);
fail
gap> GroupOfUnits(s);
<trivial transformation group of degree 0 with 1 generator>

# ClosureTest8
gap> gens := [Transformation([1341]),
> Transformation([2412]),
> Transformation([3113]),
> Transformation([3341])];;
gap> s := Monoid(gens[3]);
<commutative transformation monoid of degree 4 with 1 generator>
gap> for i in [1 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation monoid of size 62, degree 4 with 4 generators>
gap> Size(s);
62
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
10
15
6
20

# ClosureTest10
gap> gens := [Transformation([1323]),
>  Transformation([1412]),
>  Transformation([2411]),
>  Transformation([3422])];;
gap> S := Monoid(gens[1]);;
gap> for x in gens do
> S := ClosureSemigroup(S, x);
> od;
gap> Size(S);
115
gap> NrRClasses(S); NrLClasses(S); NrDClasses(S); NrIdempotents(S);
12
20
6
29

# ClosureTest11
gap> gens := [Transformation([1323]),
>  Transformation([1412]),
>  Transformation([3422]),
>  Transformation([4121])];;
gap> s := Monoid(gens[1]);;
gap> for i in [1 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]);
> od;
gap> Size(s);
69
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
17
21
9
22

# ClosureSemigroup: testing for Froidure-Pin algorithm performance, 1/?
gap> S := InverseSemigroup(
>  PartialPerm([12345678], [23456718]),
>  PartialPerm([12345678], [12345786]),
>  PartialPerm([1235678], [5671234]),
>  PartialPerm([1234568], [2345671]),
>  rec(acting := false));;
gap> Size(S);
1421569
gap> T := ClosureSemigroup(S, AsPartialPerm((12), 8));
<partial perm semigroup of rank 8 with 7 generators>
gap> Size(T);
1441729
gap> IsEnumerated(T);
true

# ClosureSemigroup: testing for Froidure-Pin algorithm performance, 2/?
gap> gens :=
> [PBR([[], [-1]], [[2], [-21]]),
>   PBR([[-21], [-1]], [[2], []]),
>   PBR([[-12], [-2]], [[1], [2]]),
>   PBR([[-1], [-2]], [[1], [-22]]),
>   PBR([[-2], [2]], [[1], [2]]),
>   PBR([[-2], [-1]], [[1], [12]]),
>   PBR([[-2], [-1]], [[1], [2]]),
>   PBR([[-2], [-1]], [[1], [-2]]),
>   PBR([[-2], [-1]], [[2], [1]]),
>   PBR([[-2], [-2, -1]], [[1], [2]])];;
gap> S := Semigroup(gens[1]);;
gap> for i in [1 .. 10] do
> S := ClosureSemigroup(S, gens[i]);
> od;
gap> Size(S);
65536
gap> IsEnumerated(S);
true

# Adding redundant generators in ClosureSemigroups 
gap> gens := [Transformation([101069366834]),
>   Transformation([101069366834]),
>   Transformation([6884712993]),
>   Transformation([6884712993]),
>   Transformation([99134105633]),
>   Transformation([99134105633]),
>   Transformation([71293103256])];;
gap> S := Semigroup(gens{[12]});;
gap> for i in [2 .. 7] do
> S := ClosureSemigroup(S, gens[i]);
> Size(S);
> od;
gap> Size(S);
3063073
gap> S := Semigroup(gens{[12]});; Size(S);
5
gap> S := ClosureSemigroup(S, gens{[34]});; Size(S);
5662
gap> S := ClosureSemigroup(S, gens{[56]});; Size(S);
111926
gap> S := ClosureSemigroup(S, gens{[7]});; Size(S);
3063073


gap> gens := [
>   PartialPerm([2345671]),
>   PartialPerm([2104060]),
>   PartialPerm([1004560]),
>   PartialPerm([7621000]),
>   PartialPerm([7231040]),
>   PartialPerm([6010047]),
>   PartialPerm([7231040]),
>   PartialPerm([4030620]),
>   PartialPerm([4230010]),
>   PartialPerm([1520600]),
>   PartialPerm([1203050]),
>   PartialPerm([2605004]),
>   PartialPerm([2730400]),
>   PartialPerm([7340020]),
>   PartialPerm([2530004])];;
gap> S := Semigroup(gens[1]);;
gap> a := [];;
gap> for i in [1 .. Length(gens)] do
> S := ClosureSemigroup(S, gens[i]);
> Add(a, Size(S));
> od;
gap> a;
749874339771122911817118171191513679138261441415002
  151981676617354 ]

# testing Froidure-Pin closure semigroup for bipartitions 
gap> gens := [Bipartition([[14, -1], [2, -3], [36, -5],
>   [5, -2, -4, -6]]),
> Bipartition([[1, -1], [256, -2], [3, -4], [4, -3, -6],
>   [-5]]),
> Bipartition([[15], [2, -4], [36, -1], [4, -5], [-2],
>   [-3, -6]]),
> Bipartition([[123, -1, -5, -6], [45, -2], [6, -3, -4]]),
> Bipartition([[123, -2], [4, -1], [5], [6, -6], [-3, -4],
>   [-5]]),
> Bipartition([[16, -2, -4, -6], [234, -1, -3], [5, -5]]),
> Bipartition([[123, -6], [46, -3], [5], [-1, -2],
>   [-4, -5]]),
> Bipartition([[124, -6], [356, -1], [-2, -3, -4, -5]]),
> Bipartition([[126, -1, -4, -5, -6], [34, -2, -3], [5]]),
> Bipartition([[156, -5], [234], [-1], [-2, -3, -4],
>   [-6]])];;
gap> a := [];; S := Semigroup(gens{[1 .. 4]});; Size(S);
2328
gap> for i in [1 .. Length(gens) / 2] do
> S := ClosureSemigroup(S, [gens[2 * i - 1], gens[2 * i]]);
> Add(a, Size(S));
> od;
gap> a;
23282328425752745555 ]
gap> a := [];; S := Semigroup(gens{[1 .. 4]});; Size(S);;
gap> for i in [1 .. Length(gens)] do
> S := ClosureSemigroup(S, gens[i]);
> Add(a, Size(S));
> od;
gap> a;
2328232823282328384142574358527454685555 ]

# ClosureSemigroup for boolean matrices
gap> gens := [
> BooleanMat([[false, true, false, false], [true, false, false, false],
>   [false, false, false, true], [true, true, false, true]]),
> BooleanMat([[true, true, true, true], [true, false, false, true],
>   [true, false, false, true], [true, true, false, true]]),
> BooleanMat([[true, true, true, false], [false, false, true, true],
>   [true, false, true, false], [false, false, true, true]]),
> BooleanMat([[true, true, false, false], [true, true, false, false],
>   [false, true, false, false], [false, false, true, false]]),
> BooleanMat([[true, false, false, true], [false, false, false, false],
>   [false, false, true, true], [true, false, true, false]]),
> BooleanMat([[false, true, true, true], [false, true, true, true],
>   [true, false, false, false], [true, true, false, false]]),
> BooleanMat([[false, false, true, true], [true, false, true, true],
>   [true, true, true, false], [false, true, false, true]]),
> BooleanMat([[false, false, true, false], [false, true, false, false],
>   [true, false, false, false], [true, true, false, true]]),
> BooleanMat([[false, false, true, false], [false, true, false, false],
>   [false, true, false, false], [false, true, false, true]]),
> BooleanMat([[false, false, false, true], [false, true, true, true],
>   [true, true, true, false], [false, true, true, false]]),
> BooleanMat([[false, false, false, true], [false, false, false, true],
>   [false, false, true, false], [true, false, false, false]]),
> BooleanMat([[true, false, false, true], [false, true, true, false],
>   [true, false, true, true], [false, false, false, true]]),
> BooleanMat([[false, false, true, true], [true, false, true, true],
>   [true, true, false, false], [false, true, true, false]]),
> BooleanMat([[true, true, false, false], [false, true, true, true],
>   [true, true, true, false], [false, true, false, true]]),
> BooleanMat([[false, false, false, true], [true, true, true, true],
>   [false, false, true, true], [false, true, false, true]]),
> BooleanMat([[true, true, true, true], [false, true, false, true],
>   [false, false, true, true], [false, false, false, true]]),
> BooleanMat([[false, true, true, false], [true, false, true, false],
>   [true, false, false, true], [false, false, false, true]])];;
gap> a := [];;S := Semigroup(gens{[1 .. 10]});; Size(S);;
gap> for i in [10 .. Length(gens)] do;
> S := ClosureSemigroup(S, gens[i]);
> Add(a, Size(S));
> od;
gap> a;
23463316359337674000419142904747 ]

# ClosureTest1
gap> gens := [Transformation([26726115]),
>  Transformation([38145671]),
>  Transformation([43277665]),
>  Transformation([71742563])];;
gap> s := Monoid(gens[1]);; Size(s);
5
gap> for i in [2 .. 4] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> Size(s);
233606
gap> NrRClasses(s);
4397
gap> NrLClasses(s);
16915
gap> NrDClasses(s);
662
gap> GroupOfUnits(s);
<trivial transformation group of degree 0 with 1 generator>

# ClosureTest2
gap> gens := [Transformation([
1393121151193191922153124151261,
281301321341361381401421441461481,
501521541561581601621641661681701,
721741761781801821841861881901921,
9419619811001102110411061108111011121,
1141116111811201122112411251111]),
>   Transformation([14110104117111014111164,
114141414141414141414141,
414141414141414141414141,
414141414141414141414141,
414141414141414141414141,
414141514111]),
>   Transformation([1551111515111515511111,
551515151515151515151515,
151515151515151515151515,
151515151515151515151515,
151515151515151515151515,
151515151151]),
>   Transformation([1616613118166121111623,
1125127129131133135137139141143,
1451471491511531551571591611631,
651671691711731751771791811831,
85187189191193195197199110111031,
105110711091111111311151117111911211,
123111126111]),
>   Transformation([1771114161711201416711,
1471147147147147147147147147147,
14714714714714714714714714714714,
7147147147147147147147147147147,
147147147147147147147147147147,
147147147147147147147147147147,
147147714]),
>   Transformation([1881118181181881118,
818181818181818181818181,
818181818181818181818181,
818181818181818181818181,
818181818181818181818181,
81818181881])];;
gap> s := Semigroup(gens[1]);;
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]);
> od;
gap> s;
<transformation semigroup of degree 126 with 6 generators>
gap> Size(s);
15853
gap> Size(Semigroup(Generators(s)));
15853
gap> NrRClasses(s);
355
gap> t := Semigroup(gens);
<transformation semigroup of degree 126 with 6 generators>
gap> NrRClasses(t);
355
gap> NrLClasses(s);
353
gap> NrLClasses(t);
353

# ClosureTest3
gap> s := Semigroup(gens[1]);; Size(s);
30
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation semigroup of size 15853, degree 126 with 6 generators>
gap> Size(s);
15853
gap> Size(Semigroup(Generators(s)));
15853
gap> NrRClasses(s);
355
gap> t := Semigroup(gens);
<transformation semigroup of degree 126 with 6 generators>
gap> NrRClasses(t);
355
gap> NrLClasses(s);
353
gap> NrLClasses(t);
353

# ClosureTest4
gap> gens := [Transformation([1110987654321]),
>  Transformation([23456789101110]),
>  Transformation([234567878910]),
>  Transformation([432345678910]),
>  Transformation([234567678910]),
>  Transformation([12345678789]),
>  Transformation([43212345678]),
>  Transformation([65432345678]),
>  Transformation([12345654567]),
>  Transformation([456787678910]),
>  Transformation([45678987654])];;
gap> s := Semigroup(gens[1]);;
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation semigroup of size 6996, degree 11 with 11 generators>
gap> Size(s);
6996
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
512
392
46
423
gap> t := Semigroup(gens);
<transformation semigroup of degree 11 with 11 generators>
gap> NrRClasses(t); NrLClasses(t); NrDClasses(t); NrIdempotents(t);
512
392
46
423

# ClosureTest5
gap> s := Semigroup(gens[1]);;
gap> s := ClosureSemigroup(s, gens[2]);;
gap> for i in [2 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation semigroup of size 6996, degree 11 with 11 generators>
gap> Size(s);
6996
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
512
392
46
423
gap> t := Semigroup(gens);
<transformation semigroup of degree 11 with 11 generators>
gap> NrRClasses(t); NrLClasses(t); NrDClasses(t); NrIdempotents(t);
512
392
46
423

# ClosureTest6
gap> gens := [Transformation([34121]),
>   Transformation([42155]),
>   Transformation([42224])];;
gap> s := Monoid(gens[1], gens[2]);
<transformation monoid of degree 5 with 2 generators>
gap> s := ClosureSemigroup(s, gens[3]);
<transformation monoid of degree 5 with 3 generators>
gap> Size(s);
732
gap> IsRegularSemigroup(s);
true
gap> MultiplicativeZero(s);
fail
gap> GroupOfUnits(s);
<trivial transformation group of degree 0 with 1 generator>

# ClosureTest8
gap> gens := [Transformation([1341]),
> Transformation([2412]),
> Transformation([3113]),
> Transformation([3341])];;
gap> s := Monoid(gens[3]);
<commutative transformation monoid of degree 4 with 1 generator>
gap> for i in [1 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]); Size(s);
> od;
gap> s;
<transformation monoid of size 62, degree 4 with 4 generators>
gap> Size(s);
62
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
10
15
6
20

# ClosureTest10
gap> gens := [Transformation([1323]),
>  Transformation([1412]),
>  Transformation([2411]),
>  Transformation([3422])];;
gap> s := Monoid(gens[1]);
<commutative transformation monoid of degree 4 with 1 generator>
gap> for i in [1 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]);
> od;
gap> Size(s);
115
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
12
20
6
29

# ClosureTest11
gap> gens := [Transformation([1323]),
>  Transformation([1412]),
>  Transformation([3422]),
>  Transformation([4121])];;
gap> s := Monoid(gens[1]);
<commutative transformation monoid of degree 4 with 1 generator>
gap> for i in [1 .. Length(gens)] do
> s := ClosureSemigroup(s, gens[i]);
> od;
gap> Size(s);
69
gap> NrRClasses(s); NrLClasses(s); NrDClasses(s); NrIdempotents(s);
17
21
9
22


gap> SEMIGROUPS.StopTest();
gap> STOP_TEST("Semigroups package: extreme/closure.tst");

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