> < ^ From:

< ^ Subject:

You mentioned free monoids in GaP:

One of the students here has implemented a semigroup package

for Gap, doing some decent stuff: It was his thesis project

here, it should be okay. It includes Knuth Bendix stuff,

It should be in the GaP incoming directory, on samson. If not,

get in touch.

There should be a semigroup.doc and a semigroup.g

Cheers

Tim

here is the DOC file

******************************************************************************* *** SEMIGROUP FUNCTIONS FOR GAP *** V 1.30 12.12.1994 (c) Widi Marcel Oliver *******************************************************************************

Semigroup( l1, l2 );

defines a semigroup;

SYNTAX 1

arguments : l1 ... set of abstract generators

l2 ... set of defining relations (list of lists)

SYNTAX 2

arguments : l1 ... the semigroup table

l2 ... the elements of the semigroupExample for SYNTAX 1 :

z2m :=Semigroup([a,b],[[a*b,b*a],[a*b,a],[b^2,b],[a^2,a]]); -l1-- ------------- l2 ------------------- generators defining relationsExample for SYNTAX 2 :

z4m := Semigroup([[a,a,a,a],[a,b,c,d],[a,c,a,c],[a,d,c,b]],[a,b,c,d]); --------------- l1 -------------------- -- l2 --- operation table elements

IsSemigroup( g );

checks if g is defined as a semigroup

DefSgCommutative( g );

define a semigroup presentation as commutative

DefAsNeutral( g, x );

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

SgTable( g {,"V"} {,order} );

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 {,order} {,"V"}); *IMPROVED*

try al permutations of ordering generators to find a minimal

subset of generators for the semigroup

optional parameters : see SgTable

RedGens( g {,order} {,"V"}); *NEW*

'Greedy Algorithm' for finding a minimal set of generators for a

semigroup in very short time

optional parameters : see SgTable

Size( g );

computes the number of elements of g

Elements( g );

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 );

checks if the semigroup g is a group

SgNeutral( g );

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

IsSgCommutative( g );

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 );

checks if s is a subsemigroup of g

SubSemigroups( g );

computes all subsemigroups of g

SgOrder( g, a );

computes the order of the element a in the semigroup g

SgDistance( g1, g2 );

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 );

computes left ideal generated by s in semigroup g

SgRightIdeal( g, s );

computes right ideal generated by s in semigroup g

SgIdeal( g, s );

computes ideal generated by s in semigroup g

IsSgLeftIdeal( g, s );

checks if s is a left ideal in g

SgRightIdeal( g, s );

checks if s is a right ideal in g

IsSgIdeal( g, s );

checks if s is an ideal in g

SgEpi( g, h );

computes all epimorphisms from g in h

SgMono( g, h );

computes all monomorphisms from g in h

SgIso( g, h );

computes all isomorphisms from g in h

SgHomo( g, h );

computes all homomorphisms from g in h

SgEndo( g );

computes all endomorphism on g

SgAuto( g );

computes all automorphisms on g

IsSgEmbeddable( g1, g2 );

checks, if the semigroup g1 is embeddable in the semigroup g2

Ver();

tells you which version of the semigroup functions you are using

****************************************************************************** watch this board for news ! NEW since V 1.27 :

* The function RedGens() has been added

* The function MinGens() has been modified : Interrupting after the first

step will most likely yield the correct result

* the warning messages on some machines should not occur any more

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

> < [top]