A package for semigroups and monoids
Version 5.4.0
Released 2024-10-19
This project is maintained by James Mitchell
Copyright © 2011-21 James D. Mitchell et al.
Licensing information can be found in the LICENSE
file.
This is a minor release resolving some issues in v3.4.1 James D. Mitchell, and with a number of improvements by Wilf A. Wilson.
This is a minor release including some bugfixes and improvements. The required
minimum version of libsemigroups
is increased from v1.1.0 to v1.3.2. The
required version of Digraphs
is increased to v1.2.0. The datastructures
package was implicitly required (via Digraphs
), and now at least version
v0.2.5 is required explicitly. The version of GAP required was implicitly at
least v4.10.0, but was explicity v4.9.0, it is now explicitly v4.10.0.
This is a minor release with the following new features added to the package:
CanonicalReesMatrixSemigroup
and CanonicalReesZeroMatrixSemigroup
written by Chris Russell.ParseRelations
for finitely presented semigroups or monoids written by Luke Elliott.TikzString
method was implemented for collections of PBRs by Finn Smith.The following bugs/issues were resolved:
-2
. Fixed by James D. Mitchell.libsemigroups
. Reported by Wilf A. Wilson fixed by James D. Mitchell.The required minimum version of libsemigroups is now v1.1.0,
This is a very minor release fixing the following issues.
Issue #676 and
Issue #677 reported
by Reinis Cirpons, where for some congruences NonTrivialCongruenceClasses
failed to work, but CongruenceClasses
did work. This was caused by an issue
in EquivalenceRelationPartition
; resolved by James D. Mitchell.
An issue in the equality, less than, and product methods for PBRs which previously permitted PBRs of different degrees to be given as arguments, resulting in unhelpful errors from within the implementations of these methods; resolved by James D. Mitchell.
This is a minor release fixing some issues in the build system Max Horn related to compatibility with future versions of GAP, and some other minor fixes by James D. Mitchell and Wilf A. Wilson.
This is a minor release fixing some issues in the build system Chris Jefferson, some improvements to the isomorphism capabilities of the package James D. Mitchell, and the introduction of a rudimentary function to compute the automorphism group of an arbitrary semigroup. From v3.3.0, the Semigroups package requires the images package version 1.3.0 or higher.
This is a minor release to fixing some build issues for windows Chris Jefferson
and fixing an issue in IsRowTrimBooleanMat
, IsColTrimBooleanMat
, and
IsTrimBooleanMat
Finn Smith see
Issue #654 for more details.
This is a minor release to fix a memory leak and some other issues in the kernel module.
This is a minor release to make some changes for compatibility with the Digraphs package v1.1.1 and GAP, and to fix a memory leak in the kernel module.
This is a minor release to update the version of libsemigroups to v1.0.5, to include some changes for compatibility with GAP, and to fix the following issues
-march=native
is only added if it is supported by the compiler;IsomorphismPermGroup
sometimes returned an incorrect answer.The changes in this release were made by Max Horn and James D. Mitchell.
This is a minor release to update the version of libsemigroups to v1.0.2, and to include some changes for compatibility with GAP. The changes in this release were made by James D. Mitchell and Wilf A. Wilson.
This is a minor release including several cleanups, changes for compatibility with GAP, and to update the required version of the Digraphs package to v1.0.0. The changes in this release were made by James D. Mitchell and Wilf A. Wilson.
This is a minor release including several cleanups, changes for compatibility
with GAP, and to add the possibility to pass a RandomSource
as a first
argument to some methods. All the changes in this release were made by
Max Horn.
This is a minor release fixing some minor issues, mostly related to compatibility with GAP 4.11.
This is a minor release of the Semigroups package, including some improvements
to SmallestIdempotentPower
and RepresentativeOfMinimalIdeal
by
Wilf A. Wilson and some other minor modifications. Semigroups now requires
version 4.8.2 of the orb package, or newer.
This is a minor release of the Semigroups package, including some changes to the build system (by D. V. Pasechnik), one issue was fixed (Issue 581 by Chris Russell and James D. Mitchell), and the version of libsemigroups required was increased to 0.6.7.
This is a minor release of the Semigroups package, including some minor changes in the kernel module (by Max Horn) and the bibliography section of the manual has been fixed and updated (by Murray Whyte).
This is a major release of the Semigroups package, including several changes to existing behaviour, new functionality, and bugfixes.
LatticeOfCongruences
, PosetOfCongruences
, and several other functions.
This change was made by Michael Torpey in
PR #385.LeftCayleyDigraph
and RightCayleyDigraph
are introduced to
replace LeftCayleyGraphSemigroup
and RightCayleyGraphSemigroup
. These new
attributes return digraph objects (in the sense of the Digraphs package)
rather than lists of out-neighbours. There are also several new functions for
visualising Cayley digraphs, such as TikzLeftCayleyDigraph
,
DotLeftCayleyDigraph
, and DotStringDigraph
. This functionality was all
added by James D. Mitchell in
PR #348.IteratorFromPickledFile
has been replaced by IteratorFromGeneratorsFile
,
and IteratorFromOldGeneratorsFile
has been removed. The behaviour of
WriteGenerators
has also been modified slightly. This work was done by
James D. Mitchell in
PR #419.DualSemigroup
and AntiIsomorphismDualSemigroup
.McAlisterTripleSemigroup
and
others, in the PRs
#271 and
#507. Chris also
introduced the related functions EUnitaryInverseCover
,
IsFInverseSemigroup
, and IsFInverseMonoid
.DirectProduct
. Direct
products created in this way support the commands Projection
and
Embedding
. To enable the creation of direct products of arbitrary finite
semigroups, the related commands NonTrivialFactorization
,
IndecomposableElements
, and IsSurjectiveSemigroup
were introduced. This
work was done by Wilf A. Wilson in
PRs #347
and #558.NambooripadPartialOrder
and NambooripadLeqRegularSemigroup
were added by Chris Russell in PRs
#467 and
#479.numbers
is available when calling DotString
on a congruence
poset (added by Michael Torpey in
PR #455).Info
statements can be produced, if desired, during computations of
congruence lattices (added by Michael Torpey in
PR #403).Ideals
(added by Michael Torpey in
PR #500).WriteMultiplicatiomTable
, ReadMultiplicationTable
, and
IteratorFromMultiplicationTableFile
were added by Chris Russell in
PR #339BrandtSemigroup
was added by James D. Mitchell in
PR #411.WreathProduct
can be now applied to construct the wreath
producth of a transformation monoid or permutation group with a transformation
semigroup or permutation group. This work was done by Fernando Flores Brito in
PR #262.SemigroupsTestAll
was introduced by Michael Torpey in
PRs #404
and #446.MinimalSemigroupGeneratingSet
were implemented by
Wilf A. Wilson in
PR #407.WriteGenerators
and ReadGenerators
(added by James D. Mitchell in
PR #569).IsIdempotentGenerated
and
IdempotentGeneratedSubsemigroup
for Rees matrix semigroups and Rees 0-matrix
semigroups were added by Wilf A. Wilson in
PR #325.IsomorphismPartialPermSemigroup
for groups and
zero-groups were added by Wilf A. Wilson in
PR #406.\<
, including
pairs of semigroups of partial permutations, pairs of semigroups of
bipartitions, and pairs of semigroups of PBRs (added by
James D. Mitchell in
PR #568).GeneratorsOfSemigroup
of a trivial group of partial permutations to be an
empty list. This was reported and fixed by Wilf A. Wilson in
PR #565.IsMonogenicSemigroup
incorrectly returned true
for an empty
semigroup. This was reported and fixed by Wilf A. Wilson
in PR #567.There have also been many technical changes to the package and its kernel module, including many by Max Horn, such as those in PRs #490, #491, #493, #501, #553, and #562.
Semigroups now requires version 4.8.1 of the orb package, or newer.
This version contains some minor changes related to compatibility issues with GAP, was updated to use libsemigroups 0.6.4, and contains bugfixes for the following issues:
Issue 530: there was
a bug in the method for IsFactorisableInverseMonoid
for an ideal of
semigroup. It only returned true
if the parent semigroup was factorisable.
[James D. Mitchell]
Issue 531: there were some issues with method selection for Green’s classes, when the RCWA package was loaded at the same time as Semigroups. [Wilf A. Wilson]
Issue 532: the
Iterator
method for free inverse monoids used some implementational details
of the method for free group iterators in the GAP library. This caused an
error to be reported when Semigroups and the RCWA package were loaded
at the same time.
[James D. Mitchell]
Issue 536: the
Iterator
method for free inverse monoids did not work as intended, because
some words could never be reached.
[James D. Mitchell]
Issue 543: the Semigroups tests failed when all packages were loaded. [Wilf A. Wilson]
This version contains some minor changes related to compatibility issues with GAP, and to resolve some incorrectly delegating methods for print/view/display. (Wilf A. Wilson)
This version contains some minor changes related to compatibility issues with GAP.
This version contains some minor improvements and bugfixes.
This version contains some minor improvements and bugfixes.
This version contains some bugfixes, and some improved functionality:
"\<func\> must return a value"
.
Finn SmithIsTrivial
did not check if the number of generators was non-zero.
[James D. Mitchell]NrCongruenceClasses
sometimes returned the wrong result for classes of
semigroups not defined in the Semigroups package.
[Michael Torpey]EvalString
by ValueGlobal
.
[James D. Mitchell]This version contains a fix for the following issue, this was resolved by updating the version of libsemigroups to 0.6.3:
This version contains some minor updates for compatibility with GAP 4.9, and some fixes for some minor issues.
This version contains some minor updates for compatibility with GAP 4.9, to fix some bugs, to update the build system, and to update the kernel module for libsemigroups version 0.6.2.
The following improvements have been made:
IsomorphismFpSemigroup
for factorisable inverse monoids is added.
[Chris Russell]The following issues are resolved:
MinimalFactorization
sometimes returned incorrect results.
[James D. Mitchell]ClosureInverseMonoid
sometimes returned incorrect results.
[James D. Mitchell]This version contains some minor updates for compatibility with GAP 4.9, the build system has been modified slightly, the kernel module has been updated for libsemigroups version 0.6.1.
This version contains some minor updates for compatibility with GAP 4.9.
This version contains some minor bugfixes, and updates for compatibility with GAP 4.9, io 4.5.0, and Digraphs 0.11.0.
This version contains some minor bugfixes, and updates for compatibility with GAP 4.9 and orb 4.8.0.
This version contains some minor bugfixes, fixes some issues where some tests in
the main GAP repo returned different output when Semigroups was loaded than when
it was not, and updates the kernel module for version 0.5.2 of
libsemigroups. The configuration option --enable-debug
was added.
The following issues are resolved:
NaturalPartialOrder
sometimes returned incorrect results.
[Wilf A. Wilson]StructureDescription
for finitely presented groups failed with an error when
Semigroups was loaded.
[James D. Mitchell]tst/testinstall/semigrp.tst
failed because of a missing method for
NrEquivalenceClasses
for a generic semigroup congruence.
[James D. Mitchell and Wilf A. Wilson]This version contains some minor bugfixes, improves the compatibility of Semigroups with other GAP packages, and updates the kernel module for version 0.5.0 of libsemigroups
The following issues are resolved:
GeneratorsOfSemigroup
. This meant that the semigroup generated by
GeneratorsOfSemigroup(M)
was not equal to M
in some rare cases.
[Wilf A. Wilson]IsInverseSemigroup
for non-acting semigroups that
sometimes returned a false positive.
[Wilf A. Wilson]This version contains some minor tweaks and the following issue is resolved:
RandomMatrix
and
IsTorsion
.
[James D. Mitchell]Some minor issues are fixed in this release:
DirectProduct
for transformation semigroups returned the wrong answer when
applied to semigroups satisfying IsMonoidAsSemigroup
.
[James D. Mitchell]Some documentation and tests were added by Michael Torpey.
Some minor issues are fixed in this release:
IsEUnitaryInverseSemigroup
for non-inverse
semigroups, which previously resulted in no method found.
[Chris Russell]ReadGenerators
and WriteGenerators
.
[James D. Mitchell]This is an minor release fixing some minor issues in the last release.
The following issues were resolved:
InversesOfSemigroupElement
some times returned an incorrect value,
specifically when applied to the identity of a transformation monoid.
[James D. Mitchell]There are improvements to the following:
IdempotentGeneratedSubsemigroup
for Rees
(0-)matrix semigroup over a group has a smaller generating set than
previously, and can be found more quickly.
[Wilf A. Wilson]IsomorphismSemigroups
is extended so that it can be applied to arbitrary
simple, 0-simple, or monogenic semigroups.
[Wilf A. Wilson]This is an extremely minor release fixing some minor issues in the last release.
This is a major release that dramatically expands the scope of the package. The package now features a compiled C/C++ module which interfaces with the libsemigroups C++ library to allow high-speed computations for congruences and certain categories of semigroup. There are also several new types of semigroup and a variety of new methods which can be used with them.
This is a minor release to correct the required version of GAP in
PackageInfo.g
(from GAP 4.9.0 to GAP 4.8.9).
This is a minor release to update the output in some test file and manual examples due to some changes in the GAP library code.
In this release there are some new features and some bug fixes. In this version, we welcome Nick Ham to the contributors to the package.
The new features in this release are contributed by Nick Ham:
ApsisMonoid
CrossedApsisMonoid
ModularPartitionMonoid
PlanarModularPartitionMonoid
PlanarPartitionMonoid
PlanarUniformBlockBijectionMonoid
SingularApsisMonoid
SingularCrossedApsisMonoid
SingularModularPartitionMonoid
SingularPlanarModularPartitionMonoid
SingularPlanarPartitionMonoid
SingularPlanarUniformBlockBijectionMonoid
SingularUniformBlockBijectionMonoid
UniformBlockBijectionMonoid
IrreundantGeneratingSubset
behaved incorrectly when given a semigroup whose
generating set consisted of a single repeated element.
[Wilf A. Wilson]MatrixEntries
gave an error for Rees 0-matrix semigroups whose matrices
contain 0
.
[Wilf A. Wilson]This is a very minor release changing the name of the README
(to README.md
)
in the PackageInfo.g
file.
This is a minor release to fix
Issue 151, and to make
some changes for future compatibility with GAP. In
Issue 151 when the
method IsomorphismPermGroup
was applied to a semigroups of non-permutation
transformations the returned mapping was not an isomorphism.
This is a minor release to fix
Issue 150, and to
correct the required version of GAP (from 4.8.2 to 4.8.3).
In Issue 150 the
function IsZeroSimpleSemigroup
entered an infinite loop for some examples of
semigroups of partial permutations.
This is a minor release to fix some manual examples, to correct the package URL
in the PackageInfo.g
file, and to fix some issues with semigroups of
bipartitions. It was formerly possible to create semigroups of bipartitions
where the generators had different degrees, but the created semigroups were
invalid; this is fixed in version 2.7.3.
This is a minor release to fix to remove ErrorMayQuit
which was renamed
ErrorNoReturn
in GAP 4.8.2. This change was made by Max Horn.
This is a minor release to fix
Issue 144. This
issue resulted in IsInverseSemigroup
sometimes returning true
for semigroups
which were not inverse. This occurred when the \(\mathscr{D}\)-classes of the
semigroup were computed before the method for IsInverseSemigroup
was first
run.
This is a minor release including some changes for compatibility with GAP 4.8, and some bug fixes.
IsomorphismReesZeroMatrixSemigroup
is introduced, and it is no longer
possible to apply IsomorphismReesMatrixSemigroup
to a 0-simple semigroup.
This change was made for the sake of consistency, so that the Range
of an
IsomorphismReesMatrixSemigroup
is always a Rees matrix semigroup and not
sometimes a Rees 0-matrix semigroup as was formerly the case.ViewString
methods for semigroups and their elements were moved from
the Semigroups
package to the GAP library. Some minor changes were made in
the method for ViewString
for semigroups, and the tests, and manual examples
were updated accordingly.IsMonoidAsSemigroup
was changed to be consistent with the
meaning of IsGroupAsSemigroup
. In earlier versions, IsMonoidAsSemigroup
was false
for semigroups in the category IsMonoid
. From Version 2.7,
IsMonoidAsSemigroup
is true
for monoids in the category IsMonoid
and for
some further semigroups.CyclesOfPartialPermSemigroup
sometimes resulted in an error due to using
DegreeOfPartialPermSemigroup
instead of the maximum of the degree and the
codegree.
James D. MitchellPartialOrderOfDClasses
sometimes resulted in an error. This bug was
introduced in Semigroups 2.6 and did not effect any previous versions.
James D. MitchellThis release includes some bugfixes, some minor new features, and one major new feature (efficient methods for semigroups of matrices over a finite field).
extensive new features for computing with semigroups, monoids, and ideals, of matrices with entries in a finite field. See Chapter 7 of the manual for more details. [Markus Pfeiffer]
The functions RectangularBand
, MonogenicSemigroup
, and ZeroSemigroup
now
have an optional first argument to specify the category of the result; the
functions LeftZeroSemigroup
and RightZeroSemigroup
are introduced in a
similar sense.
[Wilf A. Wilson]
The new property IsSemigroupWithAdjoinedZero
and attribute
UnderlyingSemigroupOfSemigroupWithAdjoinedZero
are introduced.
[Wilf A. Wilson]
The operations MotzkinMonoid
and PartialJonesMonoid
were introduced.
James D. Mitchell
Issue 131: testing membership in a Rees 0-matrix semigroup that knows it is inverse sometimes resulted in an error. [Michael Torpey]
Issue 132: this
was a feature request to introduce the operations MotzkinMonoid
and
PartialJonesMonoid
.
James D. Mitchell
Issue 134: the
operation PartialBrauerMonoid
returned the wrong answer when the argument
was 1
. The returned semigroup was not the partial brauer monoid of degree 1.
James D. Mitchell
This is a minor release including several bugfixes, lots of minor improvements in the documentation, some improvements in performance, and some new features.
Semigroups of partial permutations now have a polynomial time (quadratic in the degree) algorithm for computing the minimal ideal [Wilf A. Wilson]
A more efficient IsInverseSemigroup
method for Rees 0-matrix semigroups is
introduced, along with new methods for Idempotents
and NrIdempotents
for
inverse Rees 0-matrix semigroups
[Wilf A. Wilson]
The documentation for congruences has been improved and new tests have been added. [Michael Torpey]
A UniversalSemigroupCongruence
now returns a much smaller set of generating
pairs.
[Michael Torpey]
Issue numbers refer to those on the Bitbucket issue tracker.
Issue 126: testing membership in a Rees 0-matrix semigroup that knows it is inverse sometimes resulted in an error. James D. Mitchell
Issue 127: the
main algorithm for computing with ideals of acting semigroups which know they
are regular contained a bug that resulted in incorrect results. In some
cases, some \(\mathscr{D}\)-classes were counted more than once, and the
returned value of Size
was higher than the actual size of the ideal.
James D. Mitchell
Issue 128: in
some special cases UnderlyingSemigroup
, ViewObj
, Size
, and related
methods, for Rees 0-matrix semigroups over non-groups returned an error.
James D. Mitchell
The universal congruence specified by generating pairs on a (0-)simple semigroup no longer causes an error. [Michael Torpey]
This is a extremely minor release to change 1 character in the PackageInfo.g file (wrong package archive URL).
This is a minor release including several bugfixes, and improvements in performance, and some new features.
The function RepresentativeOfMinimalIdeal
is introduced.
[Wilf A. Wilson]
Transformation semigroups now have a polynomial time (cubic in the degree) algorithm for computing the minimal ideal [Wilf A. Wilson]
The functions RectangularBand
, ZeroSemigroup
, and MonogenicSemigroup
are
introduced.
[Wilf A. Wilson]
A method for choosing a random element of a semigroup has been introduced in the case that the semigroup knows its set of elements. This new method choose elements at random with uniform probability. [Wilf A. Wilson]
The documentation and tests for congruences has been improved. [Michael Torpey and Wilf A. Wilson]
The functionality for Rees congruences has been rewritten and improved. [Michael Torpey]
There is a new Enumerator
method for congruence classes of a semigroup
congruence.
[Michael Torpey]
Issue numbers refer to those on the Bitbucket issue tracker.
Issue 88:
an inefficiency in JoinIrreducibleDClasses
of an inverse semigroup ideal
resulted in a call to GeneratorsOfSemigroup
.
Issue 94:
EquivalenceClasses
of the trivial congruence (generated by 0 pairs of
elements) returned an error.
Issue 95: The
class containing the zero element of a Rees 0-matrix semigroup was not
returned by EquivalenceClasses
of a congruence over a Rees 0-matrix
semigroup.
Issue 108:
IsRegularSemigroup
with argument a Rees 0-matrix semigroup returned an
error.
Issue 119:
NrCongruencesClasses
and related methods did not work for Rees congruences.
Issue 121:
MultiplicativeZero
and IsMultiplicativeZero
sometimes returned incorrect
results when applied to a non-acting semigroup (i.e. a semigroup not of
transformations, partial permutations, partitions, or subsemigroups of a Rees
0-matrix semigroup).
Issue 122: A bug in the creation of Green’s classes of ideals of semigroups, which resulted in an error.
Issue 123:
IsZeroSemigroup
sometimes returned a false positive when applied to a
non-acting semigroup.
This is a minor release including some internal refactoring, and subsequent bugfixes, and stability improvements.
This is a minor release including some bug fixes, performance improvements, and additional functionality.
The functions SmallestElementSemigroup
, LargestElementSemigroup
,
and GeneratorsSmallest
.
Free bands are introduced.
Error messages are more uniform.
The function RegularDClasses
was introduced to resolve
Issue 102.
The documentation and code for semigroup congruences has been improved, and is better integrated with the core GAP system.
The functions ReadGenerators
and WriteGenerators
were improved.
Some minor corrections were made to the methods for creating the ideals of
some semigroups in standard examples semigroups, such as
SingularTransformationSemigroup
.
Issue 102: we
introduced RegularDClasses
.
Issue 104: the
performance of MaximalSubsemigroups
when applied to an inverse semigroup has
been improved.
Issue 105:
CyclesOfPartialPerm
is now documented and does not return nonsense.
Issue 106:
MaximalSubsemigroups
sometimes failed when the ResClasses package was
loaded. We refactored the code so that the method from ResClasses is no longer
applied.
Issue 107: A
bug in the creation of Green’s classes of an ideal of a semigroup, which
sometimes caused an error, has been resolved. This issue often caused
MaximalSubsemigroups
to stop in an error.
Issue 110:
MaximalSubsemigroups
can be applied to any class of semigroup where it is
possible to find an isomorphism to a transformation semigroup.
Issue 111:
POPI(1)
returned the wrong semigroup. Similar issues existed in other corner
cases, and these have been resolved too.
This is a very minor release to fix an issue caused by only loading the packages needed (but not required) by Semigroups.
This is a minor release including some bug fixes and performance improvements.
The functions:
AsTransformationSemigroup
,AsPartialPermSemigroup
,AsBipartitionSemigroup
,AsBlockBijectionSemigroup
which are shortcuts to Range(IsomorphismXSemigroup(S))
.
A method for IsTransitive
for a transformation semigroup and, optionally, a
positive integer or list of positive integers. This method is based on Gabow’s
algorithm for determining the strongly connected components of a directed
graph.
The functions MeetSemigroupCongruence
and JoinSemigroupCongruences
for
finding the meet and join of a pair of congruences of a semigroup.
There is a new method for IsSynchronizingSemigroup
, suggested by Peter
Cameron, with better complexity than the previous method.
Issue numbers refer to those on the Bitbucket issue tracker.
There was a bug in ReadGeneratorsFile
, which meant it sometimes returned
fail. The mode argument for IO_FilteredFile
was not given.
There was a bug in the \in
method for a congruence of a Rees 0-matrix
semigroup, which sometimes returned the wrong answer for the zero of the
semigroup.
There was a bug in IteratorFromGeneratorsFile
that caused it to read only
every other line in the given file, and to crash if there were an odd number
of lines.
There was no hash function for bipartitions.
The documentation for InverseSubsemigroupByProperty
did not specify the
arguments of the function.
Issue 82: it is
now possible to take the quotient of a semigroup by an ideal using the /
operator.
Issue 96:
IsIsomorphicSemigroup
sometimes returned a false negative by incorrectly
comparing the output of PartialOrderOfDClasses
(up to isomorphism) rather
than the transitive reflexive closure of PartialOrderOfDClasses
.
Issue 97: there
was a bug in the Normalizer
method, which caused GAP to crash when the
argument was a monoid with 0 generators.
Issue 98:
PartitionMonoid(1)
returned the wrong answer, it was missing the
non-identity element.
Issue 99: the
documentation for PartialOrderOfDClasses
was incorrect.
Issue 103: under certain circumstances an error was given when trying to compute with an ideal of an inverse semigroup.
This is a major release including many new features and several bug fixes.
extensive new features for computing with elements and subsemigroups of the partition monoid. It is now possible to compute with semigroups, monoids, inverse semigroups, inverse monoids, and ideals consisting of elements of the partition monoid. Examples of subsemigroups of this type are the Brauer monoids, Temperley-Lieb monoids, and the dual symmetric inverse monoid. See Chapter 5 of the manual for more details;
support for ideals of transformation, partial permutation, and bipartition semigroups, and subsemigroups of Rees 0-matrix semigroups. It is now possible to compute anything about one of these ideals that could formerly only be computed about a semigroup defined by a generating set. Such ideals now use a data structure similar to that used by semigroups defined by a generating set;
the new operations IsomorphismSemigroups
, IsIsomorphicSemigroup
,
and SmallestMultiplicationTable
. Some of the methods for this
operation require the Grape package to be fully installed;
the new operation MaximalSubsemigroups
, which returns the maximal
subsemigroups of an arbitrary semigroup. Some of the methods for
this operation require the Grape package to be fully installed;
the operation IsMaximalSubsemigroup
;
the new operation Normalizer
for computing a subgroup of a
permutation group consisting of those permutations that stabilise,
under conjugation, a transformation, partial perm, or bipartition
semigroup. The genss package is required for this operation in some
cases;
the new operation CharacterTableOfInverseSemigroup
for finding the
character table of an inverse semigroup of partial permutations;
methods for defining and manipulating the congruences of a Rees 0-matrix semigroup;
the properties IsCongruenceFreeSemigroup
, IsEUnitaryInverseSemigroup
;
ComponentRepsOfTransformationSemigroup
ComponentsOfTransformationSemigroup
CyclesOfTransformationSemigroup
ComponentRepsOfPartialPermSemigroup
ComponentsOfPartialPermSemigroup
CyclesOfPartialPermSemigroup
.the new function IteratorFromGeneratorsFile
that returns an
iterator which reads semigroup elements from a file created using
WriteGenerators
. This function is a convenient way of, for example,
looping over a collection of generators in a file without loading
every object in the file into memory. This might be useful if
the file contains more information than there is available memory;
the operation EndomorphismsPartition
that returns the monoid
of endomorphisms preserving a partition. This monoid is defined
using the minimum possible number of generators;
a version of the function Splash
that attempts to convert a string
containing a dot or tikz document into a pdf and opens this pdf.
Other file formats are also supported;
the function DotSemilatticeOfIdempotents
that produces a string
containing a dot document of the semilattice of idempotents of an
inverse semigroup grouped by \(\mathscr{D}\)-class;
NaturalLeqInverseSemigroup
, which is an umbrella
operation for NaturalLeqPartialPerm
, and other such functions.Issue numbers refer to those on the Bitbucket issue tracker.
the main algorithm underlying many of the methods in Semigroups has been revised to avoid computing the same information more than once. Some further internal rearranging and cleaning up was done.
MinimalIdeal
and SingularTransformationSemigroup
now returns an ideal
rather than a semigroup defined by a generating set;
to reduce the size of the package archive, the examples directory has been removed. The content of the examples directory is available on this webpage.
several bugs in the setup for subsemigroups of Rees 0-matrix semigroups were resolved. These issues would have caused GAP to give an error in certain circumstances.
Issue 33: an error was returned when trying to calculate the size, or multiply elements in the quotient of a semigroup by an ideal.
Issue 36,
Issue 64: the
function SmallGeneratingSet
was ambiguous, in the sense that it was
sometimes unclear how to recreate a semigroup from its small generating set.
For example, SmallGeneratingSet
of a monoid could return an empty list, but
this empty list could not be used to recreate the monoid in GAP. This was
resolved by introducing the functions SmallSemigroupGeneratingSet
,
SmallMonoidGeneratingSet
, SmallInverseSemigroupGeneratingSet
,
SmallInverseMonoidGeneratingSet
. These functions can also now be applied to
collections of elements, i.e. not only to semigroups.
Issue 47:
ClosureSemigroup
had several bugs that could, in some cases, result in
incorrect results, or semigroups with invalid data structures.
Issue 50 and
Issue 59:
WriteGenerators
wrote nothing to a file in the case that it was not piping
through xz
or gzip
.
Issue 55:
DotDClasses
did not work when the argument was a Rees 0-matrix semigroup (it
worked as intended when the argument was a subsemigroup of such a semigroup
defined by a generating set).
Issue 56: the
functions Monoid
and InverseMonoid
sometimes did not contain their
identity element.
Issue 57: under
certain circumstances a bug in the GAP kernel function INV_KER_TRANS
,
that didn’t handle kernels and transformations with different length and
degree properly, caused GAP to give an error.
Issue 63: there
was an error in the GAP library functions Monoid
and InverseMonoid
,
when they were passed a monoid as an argument.
Issue 63 (and
Issue 4 in the orb package): a
bug in the orb package meant that the log of an Orb
was not properly
updated if the enumeration stopped early because we found something we were
looking for. This caused Semigroups to return incorrect results in some
rare cases.
Issue 72: the
method for IsomorphismTransformationSemigroup
applied to a binary relation
monoid returned an isomorphism to a transformation semigroup which was missing
the image of the identity.
Issue 89: there
was a bug in TRANS_IMG_CONJ
which failed to handle transformations of
unequal degrees correctly. This causes incorrect results to be returned when
considering semigroups generated by transformations of unequal degrees.
This is a minor release containing some bug fixes. Specifically:
the functionality of ReadGenerators
and WriteGenerators
has been
improved to allow the argument to be an io file object, and support
is added to read and write directly to files compressed using
xz
. A minor bug relating to the creation of idempotents in
transformation semigroups which was triggered by the identity
transformation has been resolved. The functions
IsomorphismReesMatrixSemigroup
, InjectionPrincipalFactor
, and
IsZeroSimpleSemigroup
have been revised. IsZeroSimpleSemigroup
formerly returned true
for the 2-element zero semigroup, which is
not 0-simple. IsomorphismReesMatrixSemigroup
could have returned an
error if called for a semigroup which was not a semigroup of
partial perms or transformations. The use of AsPermutation
was
changed to PermutationOfImage
where appropriate following a change
to the library methods for AsPermutation
. The declarations of
IsomorphismPermGroup
and ClosureSemigroup
were moved/changed to
avoid warnings that their methods matched more than one
declaration. These warnings were exposed by doing LoadAllPackages
,
but were not present when loading Semigroups by itself.
Version 1.3 contains many bug fixes, extensions and improvements in the documentation, and several new methods and functions. Most notably are (in no particular order):
MaximalSubsemigroups
of Rees matrix semigroup has been
implemented;Read/WriteSemigroups
have been renamed Read/WriteGenerators
,
and their performance has been improved. It is now possible to use
WriteGenerators
to write to a gzipped file;SingularSemigroup
has been renamed to
SingularTransformationSemigroup
;MinimalDClass
,MaximalDClasses
,StructureDescriptionMaximalSubgroups
,StructureDescriptionSchutzenbergerGroups
, andIsGreensDLeq
.DotDClasses
has been introduced. This allows the
\(\mathscr{D}\)-class diagram of a semigroup to be viewed.ComponentRepsOfTransformationSemigroup
is reintroduced.This release includes several new methods for inverse semigroups of partial permutations and for free inverse semigroups. Most notably among the new methods for inverse semigroups of partial permutations are:
SmallerDegreePartialPermRepresentation
VagnerPrestonRepresentation
for changing the representation of an inverse semigroup of partial permutations. The changes in this release were the result of the University of St Andrews Research for Undergraduates Summer School in 2012, and were largely written by Wilf A. Wilson and Robert Hancock.
Free inverse semigroups, and their elements, are also introduced, this part of the package was written by Julius Jonusas (who wishes to acknowledge the support of the Carnegie Trust).
A minor release to fix some technical issues in PackageInfo.g
, the
declarations of IsGreens.Class
, and a minor change in the output in
one test in everyfunction.tst which was consequence of the
declarations of IsGreens.Class
.
The package has been renamed from Citrus to Semigroups. The package has been completely overhauled, the performance has been improved, and the code has been generalized so that in the future the same code can be used to compute with other types of semigroups.
This is the final release of Citrus (the package will be renamed Citrus in the next release since the scope of the package has expanded to include more types of semigroups than just those of transformations and partial permutations).
A minor release fixing several bugs relating to inverse semigroups
of partial permutations pointed out by partcipants at the
University of St Andrews Research for Undergraduates Summer School
in July 2012. Most notably by Demi Allen, Casey Donoven, Rhiannon
Dougall, Robert Hancock, and Wilf A. Wilson. More specifically,
SymmetricInverseSemigroup(n)
returned an incorrect answer when n=1
or n=2
, \in
for the empty mapping and an inverse semigroup of
partial perms sometimes incorrectly returned false, some harmless
compiler warnings were displayed when using more recent versions of
gcc, NaturalLeqPP
sometimes returned the incorrect value, there was
no method for IsInverseSemigroup
or IsInverseMonoid
for a semigroup
of partial perms.
A minor release fixing several bugs relating to partial
permutations and monoids thereof, pointed out by Jack Schmidt.
More specifically, MultiplicativeZero
sometimes incorrectly
returned fail for an inverse semigroup of partial permutations,
sometimes PartialPerm
incorrectly returned fail when given a dense
range as an argument, sometimes the size of an inverse monoid was 1
more than the correct value, and RestrictedPP
sometimes failed when
it should not have.
another minor release. Specific changes were: removed the
declaration of SmallGeneratingSet for IsSemigroup since it appears
not to be used and caused a warning to be shown when the RCWA package was
loaded after Citrus. Added a new abstract to the PackageInfo.g
file, and the documentation, and updated the webpages, in
particular so that the html version of the manual is linked to that
on the GAP webpage and the links to other manuals work.
renamed the function for creating the semigroup of order-preserving
transformations on an n-chain from O
to OrderEndomorphisms
after it
was pointed out that it is not sensible to have function names with
one character. Also made some minor adjustments to the manual.
minor changes due to incompatibility with Smallsemi version 0.6.4 which
caused some test files to fail when Nilmat was loaded after
Citrus. The clashes and the failed test were caused by various
properties being declared for IsTransformationSemigroup
rather than
IsSemigroup
.
the most major change is the introduction of special methods for
partial permutations and inverse semigroups. So that these methods
are efficient, a GAP kernel component (in C) has also been
introduced for various low-level computations with partial
permutations. Essentially all functions previously available for
transformation semigroups are now available for inverse semigroups
of partial permutations. The manual has been expanded and
reorganised, some standard examples have been included (semigroups
of order preserving transformations or partial permutations, the
symmetric inverse semigroup, the full matrix semigroup over a
finite field), the endomorphism monoids of the non-abelian groups
with at most 64 elements have been included in the catalogues of
examples, the functions InjectionPrincipalFactor
,
IsomorphismReesMatrixSemigroup
, and PrincipalFactor
, and some
specific properties and attributes of inverse semigroups have been
introduced (such as IsFactorisableSemigroup
and
PrimitiveIdempotents
).
fixed a bug relating to the creation of transformation semigroups
using MagmaByGenerators
. Also added the global variable
CitrusOptionsRec
containing the default values of the options
used by Citrus when creating a semigroup.
major changes are: the documentation has been further revised, functions for
creating semigroups and monoids with certain options have been introduced,
several functions have had the word Greens
removed from their names to reduce
the length, the operation ClosureSemigroup
has been introduced, the functions
ReadCitrus
and WriteCitrus
for reading and writing transformations to a file
have been introduced, several catalogues of examples of transformation
semigroups are now included in the examples directory, methods for creating a
Green’s class inside another Green’s class have been included (such as an
\(\mathscr{R}\)-class of a \(\mathscr{D}\)-class or an
\(\mathscr{H}\)-class of an \(\mathscr{L}\)-class), the hash functions used
for transformations etc have been improved.
Some minor bugs have been fixed, and new methods or functions with the following names have also been introduced:
AntiIsomorphismTransformationSemigroup
(for a transformation semigroup),IdempotentGeneratedSubsemigp
,IsomorphismTransformationSemigroup
(for a permutation group),IsomorphismTransformationMonoid
(for a permutation group),NrElementsOfRank
.major changes are: the documentation has been updated, some changes
to core functions for \(\mathscr{R}\)-classes/image orbits have resulted in a
performance improvement, there is a method for the operation
Factorization
allowing an arbitrary element of a transformation
semigroup to be expressed as a product of the generators.
Some minor bugs have been fixed, and new methods or functions with the following names have also been introduced:
OrbSCC
, OrbSCCLookup
, OrbSCCTruthTable
,
ReverseSchreierTreeOfSCC
, SchreierTreeOfSCC
,
IsomorphismTransformationSemigroup
(for a perm. gp).
fixed a critical (but rare) bug in AddToOrbitsOfKernels that caused computations relating to \(\mathscr{D}\)-classes, \(\mathscr{H}\)-classes, or \(\mathscr{L}\)-classes to return incorrect answers in some cases.
updated the method for \^
for a transformation and perm so that it
is more efficient than the library method, same for * for a perm
and transformation. New method for StructureDescription
of a
Brandt semigroup, and IsSubset
for a trans. semigroup and trans.
coll.
fixed bugs in IndexPeriodOfTransformation
(it returned incorrect
results) and AsPermutation
. Also reduce hash table lengths so that
Citrus uses less memory. Fixed bug that triggered an infinite
loop when trying to find elements of a trivial trans. semigroup.
added the functions CitrusDefaultMem
, CitrusHiMem
,
CitrusLoMem
, CitrusVeryLoMem
, IsBrandtSemigroup
,
IsLeftSimple
, IsMonogenicSemigroup
, IsRightSimple
,
IsZeroRectangularBand
, IsZeroSimpleSemigroup
.