Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  semiquo.tst   Sprache: unbekannt

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

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

#@local G, H, I, J, Q, R, S, T, cong, gens, images, map, pair
gap> START_TEST("Semigroups package: standard/semigroups/semiquo.tst");
gap> LoadPackage("semigroups", false);;

#
gap> SEMIGROUPS.StartTest();

# quotients, OneImmutable
gap> S := PartitionMonoid(4);
<regular bipartition *-monoid of size 4140, degree 4 with 4 generators>
gap> cong := SemigroupCongruence(S, [S.3, S.4]);
<2-sided semigroup congruence over <regular bipartition *-monoid 
 of size 4140, degree 4 with 4 generators> with 1 generating pairs>
gap> T := S / cong;;
gap> Size(T);
25
gap> One(T);
<2-sided congruence class of <block bijection: [ 1, -1 ], [ 2, -2 ], 
 [ 3, -3 ], [ 4, -4 ]>>

# quotients, GeneratorsOfSemigroup
gap> S := JonesMonoid(5);
<regular bipartition *-monoid of degree 5 with 4 generators>
gap> I := SemigroupIdeal(S, S.4);
<regular bipartition *-semigroup ideal of degree 5 with 1 generator>
gap> J := SemigroupIdeal(I, Bipartition([[1, -3], [2, -4], [34], [5, -5],
> [-1, -2]]));
<regular bipartition *-semigroup ideal of degree 5 with 1 generator>
gap> T := I / J;;
gap> HasGeneratorsOfMagma(T);
false
gap> GeneratorsOfSemigroup(T);
[ <2-sided congruence class of <bipartition: [ 1, -3 ], [ 2, -4 ], [ 34 ], 
     [ 5, -5 ], [ -1, -2 ]>> ]

# quotients, Rees quotient
gap> S := PartitionMonoid(4);
<regular bipartition *-monoid of size 4140, degree 4 with 4 generators>
gap> I := SemigroupIdeal(S, S.4);
<regular bipartition *-semigroup ideal of degree 4 with 1 generator>
gap> T := S / I;;
gap> Size(T);
25

# quotients, PROD_SCL_LIST_DEFAULT, PROD_LIST_SCL_DEFAULT
gap> S := Semigroup([Matrix(IsTropicalMaxPlusMatrix, [[00], [11]], 2),
>  Matrix(IsTropicalMaxPlusMatrix, [[12], [0, -infinity]], 2),
>  Matrix(IsTropicalMaxPlusMatrix, [[22], [10]], 2)]);
<semigroup of 2x2 tropical max-plus matrices with 3 generators>
gap> cong := SemigroupCongruence(S, [S.3, S.1]);
<2-sided semigroup congruence over <non-regular semigroup 
 of size 92x2 tropical max-plus matrices with 3 generators> with 
1 generating pairs>
gap> T := S / cong;;
gap> AsList(T) * T.1;
[ <2-sided congruence class of Matrix(IsTropicalMaxPlusMatrix, 
     [[11], [22]], 2)>, 
  <2-sided congruence class of Matrix(IsTropicalMaxPlusMatrix, 
     [[22], [00]], 2)>, 
  <2-sided congruence class of Matrix(IsTropicalMaxPlusMatrix, 
     [[22], [22]], 2)> ]
gap> T.1 * AsList(T);
[ <2-sided congruence class of Matrix(IsTropicalMaxPlusMatrix, 
     [[11], [22]], 2)>, 
  <2-sided congruence class of Matrix(IsTropicalMaxPlusMatrix, 
     [[12], [22]], 2)>, 
  <2-sided congruence class of Matrix(IsTropicalMaxPlusMatrix, 
     [[22], [22]], 2)> ]
gap> GreensRClasses(S) * T.1;
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 3rd choice method found for `*' on 2 arguments
gap> T.1 * GreensRClasses(S);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 3rd choice method found for `*' on 2 arguments

# quotients, ViewObj
gap> S := Semigroup([Transformation([232]), Transformation([313])]);;
gap> pair := [Transformation([323]), Transformation([111])];;
gap> cong := SemigroupCongruence(S, [pair]);;
gap> Q := S / cong;
<quotient of <2-sided semigroup congruence over <transformation semigroup of 
 degree 3 with 2 generators> with 1 generating pairs>>
gap> Size(Q);
1
gap> I := MinimalIdeal(S);
<simple transformation semigroup ideal of degree 3 with 1 generator>
gap> R := S / I;;
gap> Size(R);
5

# Issue 456 - Quotient semigroups are slow
gap> S := InverseSemigroup([PartialPerm([12345], [12345]),
>   PartialPerm([123457], [251436]),
>   PartialPerm([123456], [435129]),
>   PartialPerm([1234510], [5241310]),
>   PartialPerm([123458], [154237]),
>   PartialPerm([123457], [341526]),
>   PartialPerm([1234510], [1243510]),
>   PartialPerm([123457], [214359]),
>   PartialPerm([1234510], [245139]),
>   PartialPerm([123459], [234156]),
>   PartialPerm([123459], [213459]),
>   PartialPerm([123459], [541327]),
>   PartialPerm([123457], [425138]),
>   PartialPerm([123459], [4132510])]);;
gap> Size(S);
720
gap> cong := MinimumGroupCongruence(S);
<semigroup congruence over <inverse partial perm semigroup of size 720
 rank 10 with 14 generators> with congruence pair (6,1)>
gap> Size(S / cong);
120
gap> IsomorphismPermGroup(S / cong);
<quotient of <semigroup congruence over <inverse partial perm semigroup 
  of size 720, rank 10 with 14 generators> with congruence pair (6,1)>> -> 
<permutation group of size 120 with 2 generators>

# Issue 456 - Quotient semigroups are slow
gap> S := InverseSemigroup([PartialPerm([12345], [12345]),
>   PartialPerm([123456], [523148]),
>   PartialPerm([123456], [345217]),
>   PartialPerm([123458], [314258]),
>   PartialPerm([123457], [143257]),
>   PartialPerm([123457], [245138]),
>   PartialPerm([123457], [125438]),
>   PartialPerm([123458], [452316])]);
<inverse partial perm semigroup of rank 8 with 8 generators>
gap> Size(S);
336
gap> cong := MinimumGroupCongruence(S);
<semigroup congruence over <inverse partial perm semigroup of size 336
 rank 8 with 8 generators> with congruence pair (4,1)>
gap> Size(S / cong);
120
gap> IsomorphismPermGroup(S / cong);
<quotient of <semigroup congruence over <inverse partial perm semigroup 
  of size 336, rank 8 with 8 generators> with congruence pair (4,1)>> -> 
<permutation group of size 120 with 2 generators>

# Issue 454 - Missing functionality for quotient semigroups
gap> S := InverseSemigroup([PartialPerm([1234], [1234]),
>   PartialPerm([123456781112131419202930],
>      [214365871211141320193029]),
>   PartialPerm([123456781112131419202930],
>      [43218765109161518173231]),
>   PartialPerm([12345678910151617183132],
>      [21436587109161518173231]),
>   PartialPerm([1234212223242526272833343536],
>      [4321242322212827262536353433]),
>   PartialPerm([1234212223242526272833343536],
>      [3412232421222728252635363334]),
>   PartialPerm([12345678910151617183132],
>      [432187651211141320193029]),
>   PartialPerm([123419202930], [432118173231]),
>   PartialPerm([123422243335], [432123213634])]);
<inverse partial perm semigroup of rank 36 with 9 generators>
gap> cong := MinimumGroupCongruence(S);
<semigroup congruence over <inverse partial perm semigroup of size 36
 rank 36 with 9 generators> with congruence pair (9,1)>
gap> G := S / cong;
<quotient of <semigroup congruence over <inverse partial perm semigroup 
 of size 36, rank 36 with 9 generators> with congruence pair (9,1)>>
gap> IrredundantGeneratingSubset(S / cong);
[ <2-sided congruence class of (1,3)(2,4)(21,23)(22,24)(25,27)(26,28)(33,35)
    (34,36)>, <2-sided congruence class of [11,10][12,9][13,16][14,15][19,18]
    [20,17][29,32][30,31](1,4)(2,3)(5,8)(6,7)> ]
gap> SmallSemigroupGeneratingSet(S / cong);
[ <2-sided congruence class of <identity partial perm on [ 1234 ]>>, 
  <2-sided congruence class of (1,3)(2,4)(21,23)(22,24)(25,27)(26,28)(33,35)
    (34,36)>, <2-sided congruence class of (1,2)(3,4)(5,6)(7,8)(11,12)(13,14)
    (19,20)(29,30)> ]
gap> GeneratorsSmallest(S / cong);
[ <2-sided congruence class of <identity partial perm on [ 1234 ]>>, 
  <2-sided congruence class of (1,2)(3,4)(5,6)(7,8)(11,12)(13,14)(19,20)
    (29,30)>, <2-sided congruence class of [11,10][12,9][13,16][14,15][19,18]
    [20,17][29,32][30,31](1,4)(2,3)(5,8)(6,7)> ]

# Issue 816 - Subsemigroups of quotient semigroups
gap> S := Semigroup(Transformation([21515]),
>                   Transformation([11153]), 
>                   Transformation([25353]));;
gap> cong := SemigroupCongruence(S, [Transformation([12525]),
>                                    Transformation([21515])]);
<2-sided semigroup congruence over <transformation semigroup of degree 5 with 
 3 generators> with 1 generating pairs>
gap> T := S / cong;;
gap> gens := GeneratorsOfSemigroup(S);;
gap> images := List(gens, gen -> EquivalenceClassOfElement(cong, gen));;
gap> Q := Subsemigroup(T, images);
<semigroup with 3 generators>
gap> Q = T;
true
gap> Factorization(T, images[2]);
2 ]
gap> Factorization(Q, images[2]);
2 ]
gap> H := SubsemigroupNC(T, images);
<semigroup with 3 generators>
gap> T = H;
true
gap> Factorization(H, images[2]);
2 ]
gap> map := IsomorphismFpSemigroup(T);
<quotient of <2-sided semigroup congruence over <transformation semigroup of 
  degree 5 with 3 generators> with 1 generating pairs>> -> 
<fp semigroup with 3 generators and 8 relations of length 33>
gap> map := IsomorphismFpSemigroup(Q);
<semigroup of size 4, with 3 generators> -> 
<fp semigroup with 3 generators and 8 relations of length 33>
gap> IsomorphismFpSemigroup(H);
<semigroup of size 4, with 3 generators> -> 
<fp semigroup with 3 generators and 8 relations of length 33>

# Quotients of quotients
gap> S := Semigroup(Transformation([21515]),
>                   Transformation([11153]),
>                   Transformation([25353]));;
gap> cong := SemigroupCongruence(S, [Transformation([12525]),
>                                    Transformation([21515])]);
<2-sided semigroup congruence over <transformation semigroup of degree 5 with 
 3 generators> with 1 generating pairs>
gap> Q := S / cong;
<quotient of <2-sided semigroup congruence over <transformation semigroup of 
 degree 5 with 3 generators> with 1 generating pairs>>
gap> CongruencesOfSemigroup(Q);
[ <2-sided semigroup congruence over <quotient of <2-sided semigroup congruenc\
e over <transformation semigroup of degree 5 with 3 generators> with 
    1 generating pairs>> with 0 generating pairs>, 
  <universal semigroup congruence over <quotient of <2-sided semigroup congrue\
nce over <transformation semigroup of degree 5 with 3 generators> with 
    1 generating pairs>>>, 
  <2-sided semigroup congruence over <quotient of <2-sided semigroup congruenc\
e over <transformation semigroup of degree 5 with 3 generators> with 
    1 generating pairs>> with 1 generating pairs>, 
  <2-sided semigroup congruence over <quotient of <2-sided semigroup congruenc\
e over <transformation semigroup of degree 5 with 3 generators> with 
    1 generating pairs>> with 1 generating pairs>, 
  <2-sided semigroup congruence over <quotient of <2-sided semigroup congruenc\
e over <transformation semigroup of degree 5 with 3 generators> with 
    1 generating pairs>> with 1 generating pairs>, 
  <2-sided semigroup congruence over <quotient of <2-sided semigroup congruenc\
e over <transformation semigroup of degree 5 with 3 generators> with 
    1 generating pairs>> with 1 generating pairs> ]
gap> map := QuotientSemigroupHomomorphism(Q);
<transformation semigroup of degree 5 with 3 generators> -> 
<quotient of <2-sided semigroup congruence over <transformation semigroup of 
  degree 5 with 3 generators> with 1 generating pairs>>
gap> Q := Q / SemigroupCongruence(Q,
> [[Transformation([21515]) ^ map, 
>   Transformation([25353]) ^ map]]);
<quotient of <2-sided semigroup congruence over <quotient of <2-sided semigrou\
p congruence over <transformation semigroup of degree 5 with 3 generators>
  with 1 generating pairs>> with 1 generating pairs>>
gap> CongruencesOfSemigroup(Q);
[ <2-sided semigroup congruence over <quotient of <2-sided semigroup congruenc\
e over <quotient of <2-sided semigroup congruence over <transformation 
     semigroup of degree 5 with 3 generators> with 1 generating pairs>> with 
    1 generating pairs>> with 0 generating pairs>, 
  <universal semigroup congruence over <quotient of <2-sided semigroup congrue\
nce over <quotient of <2-sided semigroup congruence over <transformation 
     semigroup of degree 5 with 3 generators> with 1 generating pairs>> with 
    1 generating pairs>>> ]
gap> Size(Q);
2

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

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

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik