> < ^ Date: Wed, 17 Aug 1994 18:15:00 +0200
> ^ From: Tim Boykett <tim@bruckner.stoch.uni-linz.ac.at >
> < ^ Subject: semigroups

Hello Gap users.

as a part of a degree, one of the students here has
written a collection of semigroup functions for Gap.
I will include the readme below, anyone can mail me
for a copy, or I will upload it somewhere if there is
some interest.

Of course, we would be interested in any failings
in the code :-)

Regs

Tim Boykett

```-----------------------------------------------------------------------------

******************************************************************************

***   SEMIGROUP FUNCTIONS FOR GAP ***
V 1.25 25.07.1994
***    (c) Widi Marcel Oliver     ***

*******************************************************************************
```
```Semigroup( l1, l2 );
```
```*     defines a semigroup;
SYNTAX 1
arguments : l1 ... set of abstract generators
l2 ... set of defining relations
SYNTAX 2
arguments : l1 ... the semigroup table
l2 ... the elements of the semigroup
```

IsSemigroup( g );

checks if g is defined as a semigroup

DefSgCommutative( g ); *NEW*

define a semigroup presentation as commutative

```DefAsNeutral( g, x ); *NEW*
```

define the abstract generator x to be the neutral element of g

```SgTable( g {,"v"} {,order} ); *IMPROVED*
```

computes the table of the semigroup g using some improved Knuth-Bendix algorithm
"v" (optional) ... display progress of computation
order (optional) ... length-lexicographic order : 1
lexicographic order : 2
power-lexicographic order : 3

```MinGens( g {,"v"} {,order} ); *NEW*
```

try to minimize the generators in the semigroup g
optional parameters : see SgTable

```Size( g );
```

computes the number of elements of g

```Elements( g ); *FIXED*
```

computes the elements of g

```SgP( g, x, y );
```

computes the product of x and y in the semigroup g

IsSgMonoid( g );

checks if the semigroup g is a monoid

```IsSgGroup( g ); *NEW*
```

checks if the semigroup g is a group

```SgNeutral( g );
```

computes neutral element if g is a monoid; returns false otherwise

IsSgCommutative( g ); *IMPROVED*

checks if the semigroup g is commutative

SgIdempotents( g );

computes the idempotent elements of g

IsGroupInvertible( g, x );

checks, if the element x of g is (group-)invertible

SgGroupKernel( g );

computes the group kernel of a semigroup

SgCentralizer( g, s );

computes centralizer of the subset s of the semigroup g

```SgCenter( g );
```

computes the center of the semigroup g

IsSgIdempotent( g );

checks if the semigroup g is idempotent

SgRegulars( g );

computes the regular elements of g

IsSgRegular( g );

checks if the semigroup g is regular

SgCompletelyRegulars( g );

computes the completely regular elements of g

IsSgCompletelyRegular( g );

checks if the semigroup g is completely regular

IsSgInverse( g );

checks if the semigroup g is inverse

IsCliffordSg( g );

checks if the semigroup g is a Clifford semigroup

SubSemigroup( g, s );

computes the subsemigroup of g generated by the subset s of g

IsSubSemigroup( g, s ); *NEW*

checks if s is a subsemigroup of g

SubSemigroups( g ); *NEW*

computes all subsemigroups of g

```SgOrder( g, a );
```

computes the order of the element a in the semigroup g

```SgDistance( g1, g2 ); *MODIFIED*
```

computes the distance between semigroups g1 and g2 where
there must be standard-epimorphism between g1 and g2

```SgD( g1, g2 );
```

computes the distance between semigroups g1 and g2 where
g1 and g2 only must have same set of generators

```SgGCD( g1, g2 );
```

computes the greatest common divisor of semigroups g1,g2

```SgLeftIdeal( g, s ); *NEW*
```

computes left ideal generated by s in semigroup g

```SgRightIdeal( g, s ); *NEW*
```

computes right ideal generated by s in semigroup g

```SgIdeal( g, s ); *NEW*
```

computes ideal generated by s in semigroup g

IsSgLeftIdeal( g, s ); *NEW*

checks if s is a left ideal in g

```SgRightIdeal( g, s ); *NEW*
```

checks if s is a right ideal in g

```IsSgIdeal( g, s ); *NEW*
```

checks if s is an ideal in g

```SgEpi( g, h ); *NEW*
```

computes all epimorphisms from g in h

```SgMono( g, h ); *NEW*
```

computes all monomorphisms from g in h

```SgIso( g, h ); *NEW*
```

computes all isomorphisms from g in h

```SgHomo( g, h ); *NEW*
```

computes all homomorphisms from g in h

```SgEndo( g ); *NEW*
```

computes all endomorphism on g

```SgAuto( g ); *NEW*
```

computes all automorphisms on g

```********************************************************************************watch this board for news !

NEW since V 1.16 :
```

* The function SgTable has been modified to compute the operation table for commutative
semigroups using Groebner Bases.
* The function SgTable can now be called with three different orders.
* A minor bug in the SgTable function has been removed.
* The function IsSgCommutative has been completely rewritten.
* The function DefSgCommutative has been added.
* The function DefAsNeutral has been added.
* The function IsSgGroup has been added.
* The function MinGens has been added.
* The function SgDistance has been modified.
* The functions IsSubsemigroup and SubSemigroups have been added.
* The functions SgEpi, SgMono, SgIso, SgEndo, SgAuto and SgHomo have been added.
* The functions SgRightIdeal, SgLeftIdeal and SgIdeal have been added.
* The functions IsSgRightIdeal, IsSgLeftIdeal and IsSgIdeal have been added.
* The function Elements has been fixed.

```********************************************************************************
```

> < [top]