Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Bib Ind

### 2 Installing Semigroups

#### 2.1 For those in a hurry

In this section we give a brief description of how to start using Semigroups.

It is assumed that you have a working copy of GAP with version number 4.9.0 or higher. The most up-to-date version of GAP and instructions on how to install it can be obtained from the main GAP webpage http://www.gap-system.org.

The following is a summary of the steps that should lead to a successful installation of Semigroups:

• ensure that the IO package version 4.5.1 or higher is available. IO must be compiled before Semigroups can be loaded.

• ensure that the Orb package version 4.8.0 or higher is available. Orb and Semigroups both perform better if Orb is compiled.

• ensure that the Digraphs package version 0.12.0 or higher is available. Digraphs must be compiled before Semigroups can be loaded.

• ensure that the genss package version 1.6.5 or higher is available.

• download the package archive semigroups-3.0.20.tar.gz from the Semigroups package webpage.

• unzip and untar the file, this should create a directory called semigroups-3.0.20.

• locate the pkg directory of your GAP directory, which contains the directories lib, doc and so on. Move the directory semigroups-3.0.20 into the pkg directory.

• from version 3.0.0, it is necessary to compile the Semigroups package. Semigroups uses the libsemigroups C++ library, which requires a compiler implementing the C++11 standard. Inside the pkg/semigroups-3.0.20 directory, type

./configure
make

• start GAP in the usual way (i.e. type gap at the command line).

• type LoadPackage("semigroups");

from version 3.0.0: Semigroups can only be loaded if it has been compiled.

If you want to check that the package is working correctly, you should run some of the tests described in Section 2.5.

#### 2.2 Package dependencies

The Semigroups package is written in GAP and C++ and requires the Orb, IO, Digraphs and genss packages. The Orb package is used to efficiently compute components of actions, which underpin many of the features of Semigroups. The IO package is used to read and write elements of a semigroup to a file. The genss package is used in a non-deterministic version of the operation Normalizer (13.11-1) and in calculating the stabiliser of a Rees 0-matrix semigroup's matrix. The Digraphs package is used in a variety of ways in the Semigroups package, in particular, to apply standard graph theoretic algorithms to certain data structures.

#### 2.3 Compiling the kernel module

As of version 3.0.0, the Semigroups package has a GAP kernel module written in C/C++ and this must be compiled. The kernel module contains low-level functions relating to the enumeration of certain types of semigroups, and it is not possible to use the Semigroups package without compiling it.

To compile the kernel component inside the pkg/semigroups-3.0.20 directory, type


./configure
make

If you are using GCC to compile Semigroups, then version 5.0 or higher is required. Trying to compile Semigroups with an earlier version of GCC will result in an error at compile time. Semigroups supports GCC version 5.0 or higher, and clang version 5.0 or higher.

If you installed the package in another pkg directory other than the standard pkg directory in your GAP installation, then you have to do two things. Firstly during compilation you have to use the option --with-gaproot=PATH of the configure script where PATH is a path to the main GAP root directory (if not given the default ../.. is assumed).

If you installed GAP on several architectures, you must execute the configure/make step for each of the architectures. You can either do this immediately after configuring and compiling GAP itself on this architecture, or alternatively set the environment variable CONFIGNAME to the name of the configuration you used when compiling GAP before running ./configure. Note however that your compiler choice and flags (environment variables CC and CFLAGS) need to be chosen to match the setup of the original GAP compilation. For example you have to specify 32-bit or 64-bit mode correctly!

#### 2.4 Rebuilding the documentation

The Semigroups package comes complete with pdf, html, and text versions of the documentation. However, you might find it necessary, at some point, to rebuild the documentation. To rebuild the documentation use the SemigroupsMakeDoc (2.4-1).

##### 2.4-1 SemigroupsMakeDoc
 ‣ SemigroupsMakeDoc( ) ( function )

Returns: Nothing.

This function should be called with no argument to compile the Semigroups documentation.

In this section we describe how to test that Semigroups is working as intended. To quickly test that Semigroups is installed correctly use SemigroupsTestInstall (2.5-1) - this will take a few seconds. For more extensive tests use SemigroupsTestStandard (2.5-2) - this may take several minutes. Finally, for lengthy benchmarking tests use SemigroupsTestExtreme (2.5-3) - this may take more than half an hour.

If something goes wrong, then please review the instructions in Section 2.1 and ensure that Semigroups has been properly installed. If you continue having problems, please use the issue tracker to report the issues you are having.

##### 2.5-1 SemigroupsTestInstall
 ‣ SemigroupsTestInstall( ) ( function )

Returns: true or false.

This function should be called with no argument to test your installation of Semigroups is working correctly. These tests should take no more than a few seconds to complete. To more comprehensively test that Semigroups is installed correctly use SemigroupsTestStandard (2.5-2).

##### 2.5-2 SemigroupsTestStandard
 ‣ SemigroupsTestStandard( ) ( function )

Returns: A list indicating which tests passed and failed and the time take to run each file.

This function should be called with no argument to comprehensively test that Semigroups is working correctly. These tests should take no more than a few minutes to complete. To quickly test that Semigroups is installed correctly use SemigroupsTestInstall (2.5-1).

Each test file is run twice, once when the methods for IsActingSemigroup (6.1-3) are enabled and once when they are disabled.

##### 2.5-3 SemigroupsTestExtreme
 ‣ SemigroupsTestExtreme( ) ( function )

Returns: A list indicating which tests passed and failed and the time take to run each file.

This function should be called with no argument to run some long-running tests, which could be used to benchmark Semigroups or test your hardware. These tests should take no more than around half an hour to complete. To quickly test that Semigroups is installed correctly use SemigroupsTestInstall (2.5-1), or to test all aspects of the package use SemigroupsTestStandard (2.5-2).

Each test file is run twice, once when the methods for semigroups satisfying IsActingSemigroup (6.1-3) are enabled and once when they are disabled.

 ‣ InfoSemigroups ( info class )
InfoSemigroups is the info class of the Semigroups package. The info level is initially set to 0 and no info messages are displayed. To increase the amount of information displayed during a computation increase the info level to 2 or 3. To stop all info messages from being displayed, set the info level to 0. See also Reference: Info Functions and SetInfoLevel (Reference: InfoLevel).