GRAPE consists of two parts. The first part is a set of GAP functions for constructing and analysing graphs, which will run on any machine that supports GAP. The second part is based on the nauty package written in C and computes automorphism groups of graphs, and tests for graph isomorphisms. This part of the package can only be installed under UNIX.
If you got a complete binary and source distribution for your machine, nothing has to be done if you want to use GRAPE for a single architecture. If you want to use GRAPE for machines with different architectures skip the extraction and compilation part of this section and proceed with the creation of shell scripts described below.
If you got a complete source distribution, skip the extraction part of this section and proceed with the compilation part below.
In the example we will assume that you, as user gap
, are installing the
GRAPE package for use by several users on a network of two
DECstations, called bert
and tiffy
, and a PC running 386BSD, called
waldorf
. We assume that GAP is also installed on these machines
following the instructions given in Installation of GAP for UNIX.
Note that certain parts of the output in the examples should only be taken as rough outline, especially file sizes and file dates are not to be taken literally.
First of all you have to get the file grape.zoo
(see Getting GAP).
Then you must locate the GAP directories containing lib/
and doc/
,
this is usually gap3r4p0
where 0
is to be replaced by current the
patch level.
gap@tiffy:~ > ls -l drwxr-xr-x 11 gap gap 1024 Nov 8 1991 gap3r4p0 -rw-r--r-- 1 gap gap 342865 May 27 15:16 grape.zoo gap@tiffy:~ > ls -l gap3r4p0 drwxr-xr-x 2 gap gap 3072 Nov 26 11:53 doc drwxr-xr-x 2 gap gap 1024 Nov 8 1991 grp drwxr-xr-x 2 gap gap 2048 Nov 26 09:42 lib drwxr-xr-x 2 gap gap 2048 Nov 26 09:42 src drwxr-xr-x 2 gap gap 1024 Nov 26 09:42 tst
Unpack the package using unzoo
(see Installation of GAP for UNIX).
Note that you must be in the directory containing gap3r4p0
to unpack
the files. After you have unpacked the source you may remove the
archive-file.
gap@tiffy:~ > unzoo x grape.zoo gap@tiffy:~ > ls -l gap3r4p0/pkg/grape -rw-r--r-- 1 gap 1063 May 22 14:40 COPYING -rw-r--r-- 1 gap 2636 May 28 09:58 Makefile -rw-r--r-- 1 gap 4100 May 24 14:57 README drwxr-xr-x 2 gap 512 May 28 11:36 bin drwxr-xr-x 2 gap 512 May 25 14:52 doc drwxr-xr-x 2 gap 512 May 22 16:59 grh -rw-r--r-- 1 gap 82053 May 27 12:19 init.g drwxr-xr-x 2 gap 512 May 27 14:18 lib drwxr-xr-x 2 gap 512 May 28 11:36 nauty17 drwxr-xr-x 2 gap 512 May 22 12:32 prs drwxr-xr-x 2 gap 512 May 28 11:36 src
You are now able to use the all functions described in chapter Grape
except AutGroupGraph
and IsIsomorphicGraph
which use the nauty
package.
gap> RequirePackage("grape");Loading GRAPE 2.2 (GRaph Algorithms using PErmutation groups), by L.H.Soicher@qmw.ac.uk.
gap> gamma := JohnsonGraph( 4, 2 ); rec( isGraph := true, order := 6, group := Group( (1,5)(2,6), (1,3)(4,6), (2,3)(4,5) ), schreierVector := [ -1, 3, 2, 3, 1, 2 ], adjacencies := [ [ 2, 3, 4, 5 ] ], representatives := [ 1 ], names := [ [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 2, 3 ], [ 2, 4 ], [ 3, 4 ] ], isSimple := true )
If the documentation is not already installed or an older version is
installed, copy the file doc/grape.tex
into the doc/
directory and
run latex again (see Installation of GAP for UNIX). In general the
documentation will already be installed so you can just skip the
following step.
gap@tiffy:~ > cd gap3r4p0/pkg/grape gap@tiffy:../grape > cp doc/grape.tex ../../doc gap@tiffy:../grape > cd ../../doc gap@tiffy:../doc > latex manual # a few messages about undefined references gap@tiffy:../doc > latex manual # a few messages about undefined references gap@tiffy:../doc > makeindex manual # 'makeindex' prints some diagnostic output gap@tiffy:../doc > latex manual # there should be no warnings this time gap@tiffy:../doc cd ../pkg/grape
In order to compile nauty and the filters used by GRAPE to interact
with nauty type make
to get a list of support machines.
gap@tiffy:../grape > make usage: 'make <target>' EXT=<ext> where target is one of 'dec-mips-ultrix-cc' for DECstations running Ultrix with cc 'hp-hppa1.1-hpux-cc' for HP 9000/700 under HP-UX with cc 'hp-hppa1.0-hpux-cc' for HP 9000/800 under HP-UX with cc 'ibm-i386-386bsd-gcc2' for IBM PCs under 386BSD with GNU cc 2 'ibm-i386-386bsd-cc' for IBM PCs under 386BSD with cc (GNU) 'sun-sparc-sunos-cc' for SUN 4 under SunOS with cc 'bsd' for others under Berkeley UNIX with cc 'usg' for others under System V UNIX with ccwhere <ext> should be a sensible extension, i.e., 'EXT=.sun' for SUN or 'EXT=' if GRAPE only runs on a single architecture
Select the target you need. In your case we first compile the DECstation
version. We use the extension -dec-mips-ultrix
, which creates the
binaries
dreadnaut-dec-mips-ultrix
, drcanon3-dec-mips-ultrix
,
gap3todr-dec-mips-ultrix
and drtogap3-dec-mips-ultrix
in the bin/
directory.
gap@tiffy:../grape > make dec-mips-ultric-cc EXT=-dec-mips-ultrix # you will see a lot of messages
Now repeat the compilation for the PC. Do not forget to clean up.
gap@tiffy:../grape > rlogin waldorf gap@waldorf:~ > cd gap3r4p0/pkg/grape gap@waldorf:../grape > make clean gap@waldorf:../grape > make ibm-i386-386bsd-gcc2 EXT=-ibm-i386-386bsd # you will see a lot of messages gap@waldorf:../grape > exit gap@tiffy:../grape >
Switch into the subdirectory bin/
and create four shell scripts which
will call the correct binary for each machine. Skeleton shell scripts are
provided in bin/dreadnaut.sh
, bin/drcanon3.sh
, etc.
gap@tiffy:../grape > cat > bin/dreadnaut#
!/bin/csh switch ( `hostname` ) case 'tiffy': case 'bert': exec $0-dec-mips-ultrix $* ; breaksw ; case 'waldorf': exec $0-ibm-i386-386bsd $* ; breaksw ; default: echo "dreadnaut: sorry, no executable exists for this machine" ; breaksw ; endswctr-
D
gap@tiffy:../grape > chmod 755 bin/dreadnaut
You must also create similar shell scripts for drcanon3
, drtogap3
,
and gap3todr
. Note that if you are using GRAPE only on a single
architecture you can specify an empty extension using EXT=
as a
parameter to make
. In this case do not create the above shell
scripts. The following example will test the interface between GRAPE
and nauty.
gap> IsIsomorphicGraph( JohnsonGraph(7,3), JohnsonGraph(7,4) ); true gap> AutGroupGraph( JohnsonGraph(4,2) ); Group( (3,4), (2,3)(4,5), (1,2)(5,6) )
GAP 3.4.4