From f00816b6199a85075da4abe600f68f4e2f68bbf7 Mon Sep 17 00:00:00 2001 From: "James D. Mitchell" Date: Mon, 15 Jan 2024 17:42:58 +0000 Subject: [PATCH] Linting --- PackageInfo.g | 2 +- gap/3nil.gd | 60 ++++--- gap/3nil.gi | 422 +++++++++++++++++++++++-------------------------- gap/coclass.gd | 259 ++++++++++++++---------------- 4 files changed, 347 insertions(+), 396 deletions(-) diff --git a/PackageInfo.g b/PackageInfo.g index 8bfe1cd..9c8a878 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -1,7 +1,7 @@ ############################################################################# ## ## PackageInfo.g Smallsemi - a GAP library of semigroups -## Copyright (C) 2008-2015 Andreas Distler & James D. Mitchell +## Copyright (C) 2008-2024 Andreas Distler & James D. Mitchell ## ## Licensing information can be found in the README file of this package. ## diff --git a/gap/3nil.gd b/gap/3nil.gd index c5dc23b..36f714e 100644 --- a/gap/3nil.gd +++ b/gap/3nil.gd @@ -8,36 +8,32 @@ ############################################################################# ## -########################################################################### -## -## <#GAPDoc Label="Nr3NilpotentSemigroups"> -## -## -## -## returns the number of 3-nilpotent semigroups on a set with n -## elements. If the optional argument type is given it must be one -## of "UpToEquivalence", "UpToIsomorphism", "SelfDual", "Commutative", -## "Labelled", "Labelled-Commutative". -## The number will be returned for the respective type of semigroup. -## By default type is "UpToEquivalence". -##

-## The function implements the formulae calculating the number of -## 3-nilpotent semigroups developed in -## Nr3NilpotentSemigroups( 4 ); -## 8 -## gap> Nr3NilpotentSemigroups( 9, "UpToIsomorphism" ); -## 105931872028455 -## gap> Nr3NilpotentSemigroups( 9, "Labelled" ); -## 38430603831264883632 -## gap> Nr3NilpotentSemigroups( 16, "SelfDual" ); -## 4975000837941847814744710290469890455985530 -## gap> Nr3NilpotentSemigroups( 19, "Commutative" ); -## 12094270656160403920767935604624748908993169949317454767617795 -## ]]> -## -## -## <#/GAPDoc> -## - +# <#GAPDoc Label="Nr3NilpotentSemigroups"> +# +# +# +# returns the number of 3-nilpotent semigroups on a set with n +# elements. If the optional argument type is given it must be one +# of "UpToEquivalence", "UpToIsomorphism", "SelfDual", "Commutative", +# "Labelled", "Labelled-Commutative". +# The number will be returned for the respective type of semigroup. +# By default type is "UpToEquivalence". +#

+# The function implements the formulae calculating the number of +# 3-nilpotent semigroups developed in +# Nr3NilpotentSemigroups( 4 ); +# 8 +# gap> Nr3NilpotentSemigroups( 9, "UpToIsomorphism" ); +# 105931872028455 +# gap> Nr3NilpotentSemigroups( 9, "Labelled" ); +# 38430603831264883632 +# gap> Nr3NilpotentSemigroups( 16, "SelfDual" ); +# 4975000837941847814744710290469890455985530 +# gap> Nr3NilpotentSemigroups( 19, "Commutative" ); +# 12094270656160403920767935604624748908993169949317454767617795 +# ]]> +# +# +# <#/GAPDoc> DeclareGlobalFunction("Nr3NilpotentSemigroups"); diff --git a/gap/3nil.gi b/gap/3nil.gi index e01ef81..cd830b1 100644 --- a/gap/3nil.gi +++ b/gap/3nil.gi @@ -8,12 +8,12 @@ ############################################################################# ## -InstallGlobalFunction(Nr3NilpotentSemigroups, function( arg ) - +InstallGlobalFunction(Nr3NilpotentSemigroups, function(arg...) local size, # input, order of semigroups type, # optional input, type of semigroups types, # list of valid second (optional) arguments i, # loop counter + smallc, nr3NilIso, # takes a positive integer as input and returns the number of @@ -105,292 +105,266 @@ InstallGlobalFunction(Nr3NilpotentSemigroups, function( arg ) # the elements in the Cartesian product are pairs of partitions # they stand for elements in a conjugacy class of S_{n-m} x S_{m-1} - parts := Cartesian( Partitions( n-m ), Partitions( m-1 )); + parts := Cartesian(Partitions(n - m), Partitions(m - 1)); # pp is a partition pair nrs := List(parts, pp -> Produkt(transformPart(pp[1]), - Concatenation(transformPart(pp[2]),[0]))* + Concatenation(transformPart(pp[2]), [0])) * sizeConjugacyClass(pp[1]) * sizeConjugacyClass(pp[2])); + return Sum(nrs) / (Factorial(n - m) * Factorial(m - 1)); + end; - return Sum( nrs ) / (Factorial( n-m ) * Factorial( m-1 )); - end; - - return Sum([2..n-1], - m -> NrIsomorphismClasses(n,m) - NrIsomorphismClasses(n-1,m-1)); + return Sum([2 .. n - 1], + m -> NrIsomorphismClasses(n, m) - + NrIsomorphismClasses(n - 1, m - 1)); end; + smallc := function(int, part) + return 1 + Sum(Filtered(DivisorsInt(int), + x -> x <= Length(part)), + d -> d * part[d]); + end; - nr3NilSelfDual := function( n ) - - local NrEquivalenceClasses; - - NrEquivalenceClasses := function( n, m ) - local parts, sum, nrs, Produkt, Prod1, Prod2, Prod3, Prod4, smallc; - - smallc := function( int, part ) - return 1 + Sum( Filtered( DivisorsInt( int ), - x -> x <= Length(part)), - d -> d * part[d] ); - end; - - Prod1 := function( p1, p2 ) - local prod, i; - - prod := 1; - - for i in [1..Minimum( Int((Length(p1)+1)/2), Int((n+1)/2) )] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[2*i-1] <> 0 then - prod := prod * - (smallc(2*i-1,p2)*smallc(4*i-2,p2)^(i-1)) - ^(p1[2*i-1]); - fi; - od; - - return prod; - end; - - Prod2 := function( p1, p2 ) - local prod, i; - - prod := 1; - - for i in [ 1..Minimum( Int(Length(p1)/4), Int(n/4) ) ] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[4*i] <> 0 then - prod := prod * smallc(4*i,p2)^(4*i*p1[4*i]); - fi; - od; - - return prod; - end; - - Prod3 := function( p1, p2 ) - local prod, i; - - prod := 1; - - for i in [ 1..Minimum( Int((Length(p1)+2)/4), Int(n+2/4) ) ] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[4*i-2] <> 0 then - prod := prod * - (smallc(2*i-1,p2)^2*smallc(4*i-2,p2)^(4*i-3)) - ^p1[4*i-2]; - fi; - od; + nr3NilSelfDual := function(n) + local NrEquivalenceClasses; + NrEquivalenceClasses := function(n, m) + local parts, nrs, Produkt, Prod1, Prod2, Prod3, Prod4; - return prod; - end; + Prod1 := function(p1, p2) + local prod, i; + prod := 1; + for i in [1 .. Minimum(Int((Length(p1) + 1) / 2), + Int((n + 1) / 2))] do + # if exponent is 0, prod is multiplied by 1 => omit + if p1[2 * i - 1] <> 0 then + prod := prod * + (smallc(2 * i - 1, p2) * + smallc(4 * i - 2, p2) ^ (i - 1)) ^ + (p1[2 * i - 1]); + fi; + od; + return prod; + end; - Prod4 := function( p1, p2 ) - local prod, i, j; + Prod2 := function(p1, p2) + local prod, i; + prod := 1; + for i in [1 .. Minimum(Int(Length(p1) / 4), Int(n / 4))] do + # if exponent is 0, prod is multiplied by 1 => omit + if p1[4 * i] <> 0 then + prod := prod * smallc(4 * i, p2) ^ (4 * i * p1[4 * i]); + fi; + od; - prod := 1; + return prod; + end; - for i in [ 1.. Length(p1) ] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[i] <> 0 then - prod := prod * smallc(Lcm(2,i),p2) - ^(i*Gcd(2,i)*(p1[i]^2-p1[i])/2); - for j in [ 1..Minimum( Length(p1), i-1 ) ] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[j] <> 0 then - prod := prod * smallc(Lcm(2,i,j),p2) - ^(p1[i]*p1[j]*2*i*j/Lcm(2,i,j)); - fi; - od; - fi; - od; + Prod3 := function(p1, p2) + local prod, i; + prod := 1; + for i in [1 .. Minimum(Int((Length(p1) + 2) / 4), Int(n + 2 / 4))] do + # if exponent is 0, prod is multiplied by 1 => omit + if p1[4 * i - 2] <> 0 then + prod := prod * + (smallc(2 * i - 1, p2) ^ 2 + * smallc(4 * i - 2, p2) ^ (4 * i - 3)) ^ + p1[4 * i - 2]; + fi; + od; + return prod; + end; - return prod; - end; + Prod4 := function(p1, p2) + local prod, i, j; - Produkt := function( p1, p2 ); - return Prod1(p1, p2)*Prod2(p1, p2)*Prod3(p1, p2)*Prod4(p1, p2); - end; + prod := 1; - # only the zero semigroup in the case |B|=1, counted half - if m = 1 then - return 1; + for i in [1 .. Length(p1)] do + # if exponent is 0, prod is multiplied by 1 => omit + if p1[i] <> 0 then + prod := prod * smallc(Lcm(2, i), p2) ^ + (i * Gcd(2, i) * (p1[i] ^ 2 - p1[i]) / 2); + for j in [1 .. Minimum(Length(p1), i - 1)] do + # if exponent is 0, prod is multiplied by 1 = > omit + if p1[j] <> 0 then + prod := prod * smallc(Lcm(2, i, j), p2) ^ + (p1[i] * p1[j] * 2 * i * j / Lcm(2, i, j)); + fi; + od; fi; + od; - # the elements in the Cartesian product are pairs of partitions - # they stand for elements in a conjugacy class of S_{n-m} x S_{m-1} - parts := Cartesian( Partitions( n-m ), Partitions( m-1 )); - - # pp is a partition pair - nrs := List(parts, - pp -> Produkt(transformPart(pp[1]), - Concatenation(transformPart(pp[2]),[0]))* - sizeConjugacyClass(pp[1])* sizeConjugacyClass(pp[2])); - - return Sum( nrs ) / (Factorial( n-m ) * Factorial( m-1 )); + return prod; end; - return Sum([2..n-1], - m -> NrEquivalenceClasses(n,m) - NrEquivalenceClasses(n-1,m-1)); - end; - + Produkt := {p1, p2} -> + Prod1(p1, p2) * Prod2(p1, p2) * Prod3(p1, p2) * Prod4(p1, p2); - nr3NilComm := function( n ) - - local NrIsomorphismClasses; + # only the zero semigroup in the case |B|=1, counted half + if m = 1 then + return 1; + fi; - NrIsomorphismClasses := function( n, m ) - local parts,sum,nrs, Produkt, Produkt1, Produkt2, Produkt3, smallc; + # the elements in the Cartesian product are pairs of partitions + # they stand for elements in a conjugacy class of S_{n-m} x S_{m-1} + parts := Cartesian(Partitions(n - m), Partitions(m - 1)); - smallc := function( int, part ) - return 1 + Sum( Filtered( DivisorsInt( int ), - x -> x <= Length(part)), - d -> d * part[d] ); - end; + # pp is a partition pair + nrs := List(parts, + pp -> Produkt(transformPart(pp[1]), + Concatenation(transformPart(pp[2]), [0])) * + sizeConjugacyClass(pp[1]) * sizeConjugacyClass(pp[2])); - Produkt1 := function( p1, p2 ) - local prod, i; + return Sum(nrs) / (Factorial(n - m) * Factorial(m - 1)); + end; - prod := 1; + return Sum([2 .. n - 1], + m -> NrEquivalenceClasses(n, m) - + NrEquivalenceClasses(n - 1, m - 1)); + end; - for i in [ 1..Minimum( Int(Length(p1)/2), Int(n/2) ) ] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[2*i] <> 0 then - prod := prod * - (smallc(i,p2)*smallc(2*i,p2)^i)^p1[2*i]; - fi; - od; + nr3NilComm := function(n) + local NrIsomorphismClasses; - return prod; - end; + NrIsomorphismClasses := function(n, m) + local parts, nrs, Produkt, Produkt1, Produkt2, Produkt3; - Produkt2 := function( p1, p2 ) - local prod, i; + Produkt1 := function(p1, p2) + local prod, i; - prod := 1; + prod := 1; - for i in [1..Minimum( Int((Length(p1)+1)/2), Int((n+1)/2) )] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[2*i-1] <> 0 then - prod := prod * - (smallc(2*i-1,p2))^(i*p1[2*i-1]); - fi; - od; + for i in [1 .. Minimum(Int(Length(p1) / 2), Int(n / 2))] do + # if exponent is 0, prod is multiplied by 1 = > omit + if p1[2 * i] <> 0 then + prod := prod * + (smallc(i, p2) * smallc(2 * i, p2) ^ i) ^ p1[2 * i]; + fi; + od; - return prod; - end; + return prod; + end; - Produkt3 := function( p1, p2 ) - local prod, i, j; + Produkt2 := function(p1, p2) + local prod, i; + prod := 1; + for i in [1 .. Minimum(Int((Length(p1) + 1) / 2), Int((n + 1) / 2))] do + # if exponent is 0, prod is multiplied by 1 => omit + if p1[2 * i - 1] <> 0 then + prod := prod * + (smallc(2 * i - 1, p2)) ^ (i * p1[2 * i - 1]); + fi; + od; - prod := 1; + return prod; + end; - for i in [ 1.. Length(p1) ] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[i] <> 0 then - prod := prod * smallc(i,p2)^(i*(p1[i]^2-p1[i])/2); - for j in [ 1..Minimum( Length(p1), i-1 ) ] do - # if exponent is 0, prod is multiplied by 1 => omit - if p1[j] <> 0 then - prod := prod * smallc(Lcm(i,j),p2) - ^(p1[i]*p1[j]*Gcd(i,j)); - fi; - od; - fi; - od; + Produkt3 := function(p1, p2) + local prod, i, j; + prod := 1; + for i in [1 .. Length(p1)] do + # if exponent is 0, prod is multiplied by 1 => omit + if p1[i] <> 0 then + prod := prod * smallc(i, p2) ^ (i * (p1[i] ^ 2 - p1[i]) / 2); + for j in [1 .. Minimum(Length(p1), i - 1)] do + # if exponent is 0, prod is multiplied by 1 => omit + if p1[j] <> 0 then + prod := prod * smallc(Lcm(i, j), p2) ^ + (p1[i] * p1[j] * Gcd(i, j)); + fi; + od; + fi; + od; - return prod; - end; + return prod; + end; - Produkt := function( p1,p2 ); - return Produkt1( p1,p2 )*Produkt2( p1,p2 )*Produkt3( p1,p2 ); - end; + Produkt := {p1, p2} -> + Produkt1(p1, p2) * Produkt2(p1, p2) * Produkt3(p1, p2); - # only the zero semigroup in the case |B|=1 - if m = 1 then - return 1; - fi; + # only the zero semigroup in the case |B|=1 + if m = 1 then + return 1; + fi; - # the elements in the Cartesian product are pairs of partitions - # they stand for elements in a conjugacy class of S_{n-m} x S_{m-1} - parts := Cartesian( Partitions( n-m ), Partitions( m-1 )); + # the elements in the Cartesian product are pairs of partitions + # they stand for elements in a conjugacy class of S_{n-m} x S_{m-1} + parts := Cartesian(Partitions(n - m), Partitions(m - 1)); - # pp is a partition pair - nrs := List(parts, - pp -> Produkt(transformPart(pp[1]), - Concatenation(transformPart(pp[2]),[0]))* - sizeConjugacyClass(pp[1])* sizeConjugacyClass(pp[2])); + # pp is a partition pair + nrs := List(parts, + pp -> Produkt(transformPart(pp[1]), + Concatenation(transformPart(pp[2]), [0])) * + sizeConjugacyClass(pp[1]) * sizeConjugacyClass(pp[2])); - return Sum( nrs ) / (Factorial( n-m ) * Factorial( m-1 )); - end; + return Sum(nrs) / (Factorial(n - m) * Factorial(m - 1)); + end; - return Sum([2..n-1], - m -> NrIsomorphismClasses(n,m) - NrIsomorphismClasses(n-1,m-1)); + return Sum([2 .. n - 1], + m -> NrIsomorphismClasses(n, m) - + NrIsomorphismClasses(n - 1, m - 1)); end; - - nr3NilAll := function( n ) - return Sum([2..Int(n + 1/2 - RootInt(n-1))], - k -> Binomial(n,k) * k - * Sum([0..k-1], - i -> (-1)^i * Binomial(k-1,i) - *(k-i)^((n-k)^2))); + nr3NilAll := function(n) + return Sum([2 .. Int(n + 1 / 2 - RootInt(n - 1))], + k -> Binomial(n, k) * k + * Sum([0 .. k - 1], + i -> (- 1) ^ i * Binomial(k - 1, i) + * (k - i) ^ ((n - k) ^ 2))); end; - - nr3NilAllComm := function( n ) - return Sum([1..Int(n + 3/2 - RootInt(2*n))], - k -> Binomial(n,k) * k - * Sum([0..k-1], - i -> (-1)^i * Binomial(k-1,i) - * (k-i)^((n-k)*(n-k+1)/2))); + nr3NilAllComm := function(n) + return Sum([1 .. Int(n + 3 / 2 - RootInt(2 * n))], + k -> Binomial(n, k) * k + * Sum([0 .. k - 1], + i -> (- 1) ^ i * Binomial(k - 1, i) + * (k - i) ^ ((n - k) * (n - k + 1) / 2))); end; ################################################################## - ### MAIN FUNCTION + # MAIN FUNCTION + ################################################################## types := ["UpToEquivalence", "UpToIsomorphism", "SelfDual", "Commutative", - "Labelled", "Labelled-Commutative" ]; + "Labelled", "Labelled-Commutative"]; # check input - if Length( arg ) > 2 then - Error( "number of arguments must be two" ); - elif not IsPosInt( arg[1] ) then - Error( "first argument must be a positive integer" ); - elif Length( arg ) = 2 and not IsString( arg[2] ) then - Error( "second argument must be a string" ); - elif Length( arg ) = 2 and not arg[2] in types then - Error( "invalid second argument, string must be in ", types ); + if Length(arg) > 2 then + Error("number of arguments must be two"); + elif not IsPosInt(arg[1]) then + Error("first argument must be a positive integer"); + elif Length(arg) = 2 and not IsString(arg[2]) then + Error("second argument must be a string"); + elif Length(arg) = 2 and not arg[2] in types then + Error("invalid second argument, string must be in ", types); fi; # get input size := arg[1]; - if Length( arg ) = 2 then - type := arg[2]; + if Length(arg) = 2 then + type := arg[2]; else - type := types[1]; + type := types[1]; fi; - # up to equivalence if type = types[1] then - return ( nr3NilSelfDual( size ) + nr3NilIso( size ) ) / 2; - - # up to isomorphism + # up to equivalence + return (nr3NilSelfDual(size) + nr3NilIso(size)) / 2; elif type = types[2] then - return nr3NilIso( size ); - - # self dual semigroups + # up to isomorphism + return nr3NilIso(size); elif type = types[3] then - return nr3NilSelfDual( size ); - - # commutative semigroups + # self dual semigroups + return nr3NilSelfDual(size); elif type = types[4] then - return nr3NilComm( size ); - - # labelled semigroups + # commutative semigroups + return nr3NilComm(size); elif type = types[5] then - return nr3NilAll( size ); - - # labelled commutative semigroups + # labelled semigroups + return nr3NilAll(size); else - return nr3NilAllComm( size ); + # labelled commutative semigroups + return nr3NilAllComm(size); fi; end); diff --git a/gap/coclass.gd b/gap/coclass.gd index 044dd77..3addabb 100644 --- a/gap/coclass.gd +++ b/gap/coclass.gd @@ -7,156 +7,137 @@ ## ############################################################################# -## <#GAPDoc Label="NilpotentSemigroupsByCoclass"> -## -## -## -## returns for a positive integer n and an integer d with value -## 0, 1, or 2 a list of nilpotent semigroups of order n and coclass -## d up to (anti-)isomorphism. If the optional third argument r -## is given then only semigroups of rank r are returned. The semigroups -## in the list are given by finite presentations. -## NilpotentSemigroupsByCoclass(5, 1); -## [ , -## , -## , -## , -## , -## , -## ] -## gap> NilpotentSemigroupsByCoclass(7, 0); -## [ ] -## gap> NilpotentSemigroupsByCoclass(4, 2, 3); -## [ ] -## ]]> -## -## -## <#/GAPDoc> - +# <#GAPDoc Label="NilpotentSemigroupsByCoclass"> +# +# +# +# returns for a positive integer n and an integer d with value +# 0, 1, or 2 a list of nilpotent semigroups of order n and coclass +# d up to (anti-)isomorphism. If the optional third argument r +# is given then only semigroups of rank r are returned. The semigroups +# in the list are given by finite presentations. +# NilpotentSemigroupsByCoclass(5, 1); +# [ , +# , +# , +# , +# , +# , +# ] +# gap> NilpotentSemigroupsByCoclass(7, 0); +# [ ] +# gap> NilpotentSemigroupsByCoclass(4, 2, 3); +# [ ] +# ]]> +# +# +# <#/GAPDoc> DeclareGlobalFunction("NilpotentSemigroupsByCoclass"); -########################################################################### -## -## <#GAPDoc Label="NilpotentSemigroupsCoclass0"> -## -## -## -## returns for a positive integer n a list of length one containing -## a finitely presented semigroup of coclass 0, that is a nilpotent, -## monogenic semigroup, of order n. -## NilpotentSemigroupsCoclass0(513); -## [ ] -## ]]> -## -## -## <#/GAPDoc> -## +# <#GAPDoc Label="NilpotentSemigroupsCoclass0"> +# +# +# +# returns for a positive integer n a list of length one containing +# a finitely presented semigroup of coclass 0, that is a nilpotent, +# monogenic semigroup, of order n. +# NilpotentSemigroupsCoclass0(513); +# [ ] +# ]]> +# +# +# <#/GAPDoc> DeclareGlobalFunction("NilpotentSemigroupsCoclass0"); -########################################################################### -## -## <#GAPDoc Label="NilpotentSemigroupsCoclass1"> -## -## -## -## returns for a positive integer n a list of nilpotent semigroups o -## coclass 1 up to (anti-)isomorphism as finitely presented semigroups. -## NilpotentSemigroupsCoclass1(2); -## [ ] -## gap> NilpotentSemigroupsCoclass1(3); -## [ ] -## gap> NilpotentSemigroupsCoclass1(5); -## [ , -## , -## , -## , -## , -## , -## ] -## ]]> -## -## -## <#/GAPDoc> -## +# <#GAPDoc Label="NilpotentSemigroupsCoclass1"> +# +# +# +# returns for a positive integer n a list of nilpotent semigroups of +# coclass 1 up to (anti-)isomorphism as finitely presented semigroups. +# NilpotentSemigroupsCoclass1(2); +# [ ] +# gap> NilpotentSemigroupsCoclass1(3); +# [ ] +# gap> NilpotentSemigroupsCoclass1(5); +# [ , +# , +# , +# , +# , +# , +# ] +# ]]> +# +# +# <#/GAPDoc> DeclareGlobalFunction("NilpotentSemigroupsCoclass1"); -########################################################################### -## -## <#GAPDoc Label="NilpotentSemigroupsCoclass2"> -## -## -## -## returns for a positive integer n a list of nilpotent semigroups o -## coclass 2 up to (anti-)isomorphism as finitely presented semigroups. -## NilpotentSemigroupsCoclass2(3); -## [ ] -## gap> NilpotentSemigroupsCoclass2(4); -## [ ] -## ]]> -## -## -## <#/GAPDoc> -## +# <#GAPDoc Label="NilpotentSemigroupsCoclass2"> +# +# +# +# returns for a positive integer n a list of nilpotent semigroups o +# coclass 2 up to (anti-)isomorphism as finitely presented semigroups. +# NilpotentSemigroupsCoclass2(3); +# [ ] +# gap> NilpotentSemigroupsCoclass2(4); +# [ ] +# ]]> +# +# +# <#/GAPDoc> DeclareGlobalFunction("NilpotentSemigroupsCoclass2"); - DeclareGlobalFunction("IsomorphicFpSemigroup"); -########################################################################### -## -## <#GAPDoc Label="NilpotentSemigroupsCoclass2Rank2"> -## -## -## -## returns for a positive integer n a list of nilpotent 2-generated -## semigroups of coclass 2 up to (anti-)isomorphism as finitely presented -## semigroups. -## NilpotentSemigroupsCoclass2Rank2(4); -## [ ] -## gap> NilpotentSemigroupsCoclass2Rank2(5); -## [ , -## , -## , -## , -## , -## , -## , -## , -## , -## , -## ] -## ]]> -## -## -## <#/GAPDoc> -## +# <#GAPDoc Label="NilpotentSemigroupsCoclass2Rank2"> +# +# +# +# returns for a positive integer n a list of nilpotent 2-generated +# semigroups of coclass 2 up to (anti-)isomorphism as finitely presented +# semigroups. +# NilpotentSemigroupsCoclass2Rank2(4); +# [ ] +# gap> NilpotentSemigroupsCoclass2Rank2(5); +# [ , +# , +# , +# , +# , +# , +# , +# , +# , +# , +# ] +# ]]> +# +# +# <#/GAPDoc> DeclareGlobalFunction("NilpotentSemigroupsCoclass2Rank2"); -########################################################################### -## -## <#GAPDoc Label="NilpotentSemigroupsCoclass2Rank3"> -## -## -## -## returns for a positive integer n a list of nilpotent 3-generated -## semigroups of coclass 2 up to (anti-)isomorphism as finitely presented -## semigroups. -## NilpotentSemigroupsCoclass2Rank3(3); -## [ ] -## gap> NilpotentSemigroupsCoclass2Rank3(4); -## [ ] -## ]]> -## -## -## <#/GAPDoc> -## +# <#GAPDoc Label="NilpotentSemigroupsCoclass2Rank3"> +# +# +# +# returns for a positive integer n a list of nilpotent 3-generated +# semigroups of coclass 2 up to (anti-)isomorphism as finitely presented +# semigroups. +# NilpotentSemigroupsCoclass2Rank3(3); +# [ ] +# gap> NilpotentSemigroupsCoclass2Rank3(4); +# [ ] +# ]]> +# +# +# <#/GAPDoc> DeclareGlobalFunction("NilpotentSemigroupsCoclass2Rank3"); - DeclareGlobalFunction("NilpotentSemigroupsCoclassD_NC"); - DeclareGlobalFunction("NilpotentSemigroupsCoclassD");