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.
********************************************************************************