3. Instructions for use of individual programs.

(i) makegp
Source files:  mg.c
Usage: makegp gpname [outf]
Default: outf=inperm.
Group is output in format 0. Information required is requested and input on
terminal. Permutations are input in cyclic notation.
Warning: Error checks may be inadequate. Input errors will be detected by gprun.

                             -----

(ii) gprun
Source files:  gpd.c gpp.c permfns.c
Usage:  gprun [-w] [-n] [-b] gpname [inf] [outf]
Default: inf=inperm  outf=outperm
Base and strong generating set is constructed and output to outf in format 1.
inf must be in format <=0.
If -b is set, it is assumed that the given initial base is in fact a full base
for G. This speeds up the algorithm considerably, but the result will be false
if it is not a base.
Option -w outputs new generators as words in the old
generators to a file with the name "G.word". This output is used by the
program matcalc only.
Option -n exits with a diagnostic if one of the generators is the identity.
Otherwise, this generator is simply removed. This option is always used by
"cohomology". It should be used in situations where the original list of
generators has to correspond to matrix generators, or generators in a
Todd-Coxeter file, for otherwise errors would result.

                             -----

(iii) egrun
Source files:  egd.c egp.c permfns.c
Usage:  egrun [-s] [-f] gpname [inf] (if -f [inf2]) [outf].
Default: inf=outperm   outf=sg   inf2=inperm
inf must have format>0. Redundant strong generators are eliminated in the
stabilizer of the first n base points (n>=0) of the group, and the result is
output to outf in format 3. If -s is set,n is asked for and input on the
terminal; otherwise n=0.
If -f option is set, then, if ngens is the number of generators in the file
gpname.inf2, the generators in gpname.inf with numbers less than or equal to
ngens are not eliminated. The idea of this is to use it with inf2=inperm, and
inf=outperm (the default), in which case the defining generators of the group
will not be eliminated. This is necessary when computing the presentation of
an extension in terms of the generators in the gpname.tc file, which will
correspond to the defining generators.
The last line of the output file contains a list of the original numbers of
the generators. This is used by 'readrels' for purpose explained in the last
paragraph.

                             -----

(iv) sylrun
Source files:  syld.c sylp.c permfns.c morepermfns.c
Usage:  sylrun gpname [inf] [outf]
Default: inf=outperm  outf=sylp
A sylow p-subgroup of the group is found and output to outf in format 4.
inf must have format>0. The prime  p  is asked for and input on the terminal.
The generating permutations generate a subnormal series for the Sylow group.
Format 4 implies this, and the prime and the orders of the factors in this
subnormal series are listed at the end of outf.
Warning: Behaviour is unpredictable if a composite number is input.

                             -----

(v) normrun
Source files:  normd.c normp1.c normp2.c permfns.c morepermfns.c chb.c
Usage:  normrun [-c] [-n] [-s] [-o] gpname inf1 inf2 (inf3) [outf1] ([outf2])
inf3 only needed if -s set.
Defaults:  outf1=norm  (or cent if -c set)
           outf2=ng (only output if -n set)
inf1 and inf2 have no default, and must be named.
The normalizer (or if -c the centralizer) of inf2 in inf1 is computed and
output to outf1 in format 3.
If H=G in the case of the normalizer, then this is not output, but a
diagnostic is written.
If -n is set, then the elements found in the normalizer are listed in outf2.
If -s is set, inf3 should contain a set of generators of inf2, which may be
smaller than the set in inf2 itself. This does not seem to save much time in
practice, so it is probably not worth using.
If -o is set, then the user can help to choose the base used for  G. This can
speed things up in a few big examples. (e.g. computing the normalizer of the
Higman-Sims group in Sym(100).)
Note carefully.
a) inf2 must be a subgroup of inf1
b) inf1 and inf2 must have format>=3, so output from gprun cannot be used.
   egrun or sylrun must first be used. However, inf1 and inf2 need not have
   the same base. outf1 will have the same base as inf1.
c) inf1=sym is allowed. Then the normalizer (centralizer) of inf2 in the
   symmetric group is computed. The base of outf1 cannot be predicted in this
   case.

                             -----

(iv-v) sylnorm
Source files: snd.c sylp2.c normp1.c normp2.c permfns.c morepermfns.c chb.c
Usage: sylnorm [-s] [-o] [-h] [-n] [-c] gpname inf1 inf2 (inf3) [outf1] [outf2]
This is a combined version of sylrun and normrun.
If -s is not called it is completely identical to (v).
If -s is called, only -o is relevant among the other options, and the call is
the same as in sylrun, but inf1 must have format >= 3, and it defaults to sg,
not outperm. This program tends to run slower than sylrun for small examples,
but for some large examples it is much quicker, since it uses the normrun
programs when in difficulties. When -o is called, various parameters, which 
have defaults given in snd.c can be changed.

                             -----

(vi) conrun
Source files: conpdcd.c conpdc1.c conpdc2.c
Usage:  conrun [-g] [-c] [-d(n)] [-h] [-eg] [-eh]
        gpname inf1 inf2 (if -h [inf3]) ([outf2]) ([outf3]) ([ngn]) ([outf1])
(n is an integer with 0<=n<=9.)
inf3 only needed if -h, outf2 only if -d, outf3 only if -c,ngn only if -d0.
-d implies -h, and so they need not both be typed.
Default: inf3=pg outf2=dcr outf3=cr ngn=ng outf1=inf3.nr
inf1 and inf2  must be named.
inf2=triv (trivial group) is allowed. Otherwise, inf2 must be a subgroup of
inf1, and they must have the same base with format>0.
   First, left coset representatives of inf2 in inf1 are computed. If -c these
are output to outf3.
   If -eg (resp. -eh) then the required permutations in the group
G=inf1 (resp. H=inf2) are stored as permutations rather than as Schreier
vectors. This makes the program run faster for big groups, if there is enough
space.
   If -h, then generators from inf3 (format>=0) are computed in
their action on these coset reps. These new permutations are output to a file
outf1 in format 0. This can be useful if a different
permutation representation of the group is required (in particular, the
regular representation is obtained by setting inf2=triv).
   If -g is set, then the same is done for the generators of inf1, but
more information is output, to a file named G.inf1.cp.  The extra information
gives the corresponding element of inf2 for each permuted point. This is
required when constructing corestriction maps from inf2 to inf1.
   If -d, then the orbits of this action are computed. The double coset reps
inf3 /g\ inf2 in inf1 can then be computed, and are output to outf2.
In applications, inf3 will usually be pg, and inf2 one of the H(i) (or P).
This gives double coset reps P/g\H(i), which is often good enough. The smaller
set H(i)/g\H(i) can also be used, and it is recommended that this be used for
computations of second cohomology groups, where the action of each g on the
cohomology group takes a long time to compute in comparison with the
computation of the  g  themselves. If this smaller set is required, for H(i),
then it can be computed by calling -di rather than just -d. By default, the
generators of H(i)-P will be taken from the files G.ng, G.dcr1,...,G.dcri.
So if G.ng only required, use -d0.
If the user wishes to use a smaller set than this, in the single file
G.ngn, then call -d0, and include ngn at the end of the program call.
Whenever -d is called, then the files G.pg.nr, etc. are removed after use.

                             -----

(vii) pcrun
Source files: pcd.c pcp.c permfns.c pcscfns.c
Usage:  pcrun [-c] [-m] gpname [inf] [outf1] [outf2]
Option -m means multiplier (rather than p-multiplicator) is required.
Defaults:  inf=sylp outf1=spc outf2=pcp
A central series for sylp (which must have format 4) is computed and output to
outf1 in format 2 (which is format 1 with additional information). A power
commutator presentation is then computed and output to outf2.
Note. The generators of the PCP in spc are numbered with the central
generators coming first, which is the reverse order from the numbering in
pcp. In pcp (and all PCP files), central generators come last.
If -c is set, then the generators from gpname.psg (which must be present as
output from egrun on sylp) are converted to strings in the PCP generators, and
output to gpname.psgwds. This is only needed if corestrictions are to be
computed.

                             -----

(viii) scrun
Source files: scd.c scp.c permfns.c pcscfns.c
Usage: scrun [-s(n)] [-m] gpname ([inf3]  [inf4]) [outf] [inf2] [inf1]
(n is an integer with 1<=n<=9.)
Option -m as for pcrun.
inf3  and inf4 only required if -s set.
Defaults: inf1=spc outf=sc inf2=dcr
          if -s alone set, inf3=sg1 inf4=cr1
          if -si set for i>=1, inf3 and inf4 cannot be given, since they take
          several different values in the same run. These values are assumed
          to be sg1,..,sgi and cr1,..,cri.
   This program will always be used with inf1=spc (the central series for
P). It will be run separately with inf2 =ng (if H(0)=N(P)),dcr1,...,
dcrn,dcr  in turn, to compute the Sylow intersections g(-1)Pg ^ P  for
g  in the files inf2. The generators of the Sylow intersection, their
conjugates under  g, and the PCP of the intersection are output to outf,
unless g is in N(P), in which case only the images of the generators
are output.
   A technical problem is that, for i>1, g in dcri will have to be replaced
by  gh, for some  h in H(i-1), in order to ensure that the Sylow intersection
is as large as possible. This is carried out, and the file G.dcri is suitably
updated. For i>1 the program should be called with option -s(i-1), and the
files G.cr1,...,G.cr(i-1)  should all have been computed. h is computed as a
product  h(i-1)...h(1), for h(j) in crj. This is done by computing
g(-1)Pg ^ H(i-1) originally, and then replacing g by gh(i-1),gh(i-1)h(i-2),...
in turn, such that the intersection lies in the subgroups H(i-2),H(i-3), and
then finally in H(0), and hence in  P.

                             -----

(ix) selgen
Source file: slg.c
Usage:  selgen [-w] gpname [inf] [outf]
Defaults: inf=spc outf=pg
(Defaults are only likely to be useful when -w set.)
   A subset of the generators in inf (format>=0) is selected, and output to
outf in format 0. If -w is not set, then this subset is input at terminal. If
-w is set, then it is assumed that inf is the output from pcrun,
and those generators of weight one are selected. These form a minimal
generating set for P.
The order of output is always the same as the order of input. If a different
order is wanted, program testpf should be used.

                             -----

(x) chbrun
Source files:  testchb.c chb.c permfns.c
Usage:  chbrun gpname [inf] [outf]
Defaults:  inf=sg outf=newbas
inf must have format>=3. The base of the group can be changed by inputting the
new base on the terminal. outf has format 3. Input 0 0 to quit.

                             -----

(xi) optrun
Source files: optd.c optp.c permfns.c
Usage:    optrun [-t] [-e] [-w] gpname [inf2] [inf1]
inf2 and inf1 are two groups H  and  G.  -e set means H=G. H and G must have
the same base. inf1 must have format > 0 and inf2 may have any format.
If -w is set, those elements of inf2 that lie in inf1 are output as words in
the strong generators of inf1.
Defaults: inf1=outperm (in which case inperm is also used).
If no arguments are given inf2=outperm, and -e is true. Otherwise, -e is
assumed false unless it is set. If -e is set, only one argument should be given.
Warning: It is assumed that the given base for G is also a base for H.

If -t (test) is set, the program merely tests whether H is a subgroup of G, and
then outputs "true" or "false", and exits. (This is mainly for use with the
shell procedure  "cohomology".)
Otherwise:
The program can construct a further group  C  as a function of  G  and  H, and
this can be output to a file which is named on the terminal. Options for C are
selected, and they include  [G,H], <G,H>, G^H and core-G(H). Permutations in H
may be tested for membership of G, and expressed in the generators of G.

                             -----

(xii) matcalc
Source files:  mcd.c mcp.c matfns.c
Usage:    matcalc [-t] [-o] gpname [[-]inf4]  [[-]inf4]  ...
Used to perform the necessary matrix calculations, before cohomology groups can
be computed. Since all such calculations are carried out at once, the program
call is slightly involved.
      Input is always from G.inf1=G.inmat, which should contain a list of
matrices giving the actions of the generators in G.inperm (in the right order)
on the module  M.  Line 1 of this file contains prime, dimension and number of
matrices, and the matrices themselves follow. gprun should have been called
with -w set to produce G.words, which is used as inf2 in matcalc. This is used
to compute the matrices corresponding to the generators in G.outperm. If -o is
not set, then G.sg is assumed to be present, and only those matrices
corresponding to the generators in G.sg are kept. If -o is set, G.sg
is not used.
      If -t (test) is set, then the file G.sg.rel must be present, and the
program begins by checking whether the matrices for G.sg really satisfy these
relations.  If not, then the program exits with an error message.
      For each following filename, inf4, the permutations from the file
G.inf4 (which should be a subgroup of G) are read in, and their corresponding
matrices are computed and output to the file G.inf4mat. (e.g. a5.ngmat).
There are some complications, however!
1) If -inf4 is given as the argument, then the inverses of the matrices are
   output.
2) When the name inf4='pg' is encountered, firstly the matrices are all
   inverted and transposed, since matrices of the dual space are used in
   nqrun. Then two basis changes are made (which are are output both to the
   terminal and to a file G.cbmats for later reversal) in order to
   triangularize the action of P on the vector space, and to provide a PCP
   with definitions for use in nqrun. Furthermore, the matrices for this
   file pgmat only are output in reverse order, since the PCP generators are
   in the opposite order from their corresponding permutations. For all
   files inf4 following this, the dualization and basis changes are maintained.

 A typical call for use in a cohomology computation would be:
     matcalc G psg nsg sg1 sg -cr0 -cr1 -cr pg ng dcr1 dcr
The files G.pgmat, G.ngmat, G.dcr1mat and G.dcrmat are used by nqrun, so these
are dualized and triangularized. The remainder are used by extprun and crrun,
and use the original basis, since this is presumably more convenient for the
eventual presentation of the extension. Inverting the matrices in the coset-
rep. files is done to save time in crrun, since they are re-read several
times by this program, and are always used inverted.

NOTE. All entries in matrices to be input should be in the range 0<=x<p.
      Do not use negative entries!

                             -----

(xiii) matperm
Source files:  matperm.c matfns.c
Usage:  matperm gpname [inf] [outf]
Defaults: inf=inmat outf=inperm
This is useful for producing permutation representations of matrix groups.
Generators of a subspace of the module are input on the terminal,
and the permutation representations of the generators on the orbit
of this subspace are computed. There is no guarantee
or means of knowing in general whether this representation will be faithful.

                             -----

(xiv) nqmrun
Source files:  nqmd.c nqmp.c nqmfns.c
Usage: nqmrun [-c] [-a] [-i] gpname ([inf2]) [inf1] [outf]
inf2 only if -a
Defaults: inf1=pcp if not -a, cov if -a   outf=cov inf2=sc
   inf1 may either be the output from pcrun, or from a previous run of nqmrun.
In the first case(-a not set), the Schur multiplier and a covering group of P
is computed, and output to outf.
   In the second case (-a set), the quotient group of this multiplier
is computed under the action of the elements g, which is given in inf2,
the output from scrun. This quotient is again output to outf.
   -i should only be set if -a is set and all of the elements g lie in N(P).
In this case, the action is not factored out, but the action of g on the
generators of M is printed out. This is useful for computing the action of
automorphisms g of G on the multiplier. If g is itself a permutation on the
set then there is no problem, but if not, then the inf2 file, giving the
action of g on P, must be created manually.
      The final orders of the cyclic factors of  M (or its factor group) are
output on the terminal.
   If -c is set, then files G.psgwds (output from pcrun with -c set), and
G.psg.rel (output from grrun) must be present. The values of the relators
in the latter file in the resulting extension of  M  by  P, are computed as
elements of  M, and output to G.psg.er. Usually only needed if
corestrictions are to be computed.

                             -----

(xv) nqrun
Source files:  nqd.c nqp1.c nqp2.c nqp3.c nqfns.c matfns.c
Usage:  nqrun [-c] [-a] [-k] [-1] [-f] gpname ([inf3] [inf4]) [inf1] [outf1]
        ([inf2] [outf2])
inf3 inf4 only if -a set. inf2 outf2 only if -a not set.
only inf1 if -f set.
Defaults:  inf1 = pcp if not -a, ch1 or ch2 if -a
           inf2=pgmat  inf3=sc  inf4=dcrmat  outf1=ch1 or ch2 outf2=pmats.
For computation of second cohomology groups, or, if -1 is set, first cohomology
groups.  This should be run first with -a not set, to compute H^X(P,M),
and then run separately with -a set, for each H(0),H(1),...,H(n),G in turn,
to give H^X(H(i),M), and finally H^X(G,M), where X=1 or 2.
For X=2, at the end of each run, two numbers  chpdim  and  chsdim appear on the
terminal. The first of these is always the dimension of  H^2(P,M) (over the
prime field), and the second is the dimension of the subgroup that is
factored out to give H^2(G,M). So H^2(G,M)  has dimension chpdim-chsdim.
In fact, the duals of these groups are computed, which is why we get a factor
group rather than a subgroup.
    When -a is not set, input is from inf1 (output of pcrun) and inf2 (output
of matcalc). The Frattini extension  E  of the Frattini module  F  of  P  is
calculated to the required depth. Then Hom - P (F,M)  is computed (as a dual)
and finally the subgroup that corresponds to H^2(P,M).
When -a is set, the same computation is carried out for each Sylow intersection
 Q  in  P,  and the appropriate embeddings of the dual of H^2(Q,M) in H^2(P,M)
are computed, to give a subspace of dimension chsdim. Input is from the output
of scrun (inf3) and output of matcalc (inf4). Output is always to outf1.
   Usage of -c option similar to nqmrun, but in this case a stable element of
H^2(P,M) must be selected by the user, and input on the terminal. Before
outputting to G.psg.er, the basis changes carried out by matcalc are read in
from the file G.cbmats and reversed, so that this file, and all folllowing
files up to G.sg.er will have values in M with respect to the original basis.
   If -f is set, then no other option can be set. The full Frattini subgroup of
the group in inf1 is computed. This is used only for testing, since the final
order (which grows very rapidly with |P|) can be computed in advance..

Bug: -c only works properly if -a is also called. To get round this, in the
case where there is no further action to be computed, simply insert a
nonexistent filename for inf3.

                             -----

(xvi) grrun
Source files:  grd.c grp.c permfns.c
Usage:    grrun -f gpname [inf]
Default:   inf=sg.
inf must have format>0. Output is to G.inf.rel. Relations defining a
strong presentation of inf with respect to the given set of strong generators
are computed, by using interruptable Todd-Coxeter coset enumerations.
Various parameters associated with the enumeration are input on the terminal.
(Suggested values: 1.5  50  30  1).
When looking for a new relator, usually the shortest amonst those available
is chosen. If -f is set, the first is chosen.

                             -----

(xvii) extprun
Source files: extpd.c exa.c exb.c exc.c permfns.c matfns.c
Usage:   extprun [-m] gpname [inf]
-m is set if multiplier and central extension are being computed.
Default:  inf=sg.
inf must have format>=3. Output is to G.inf.ep. The file G.inf.er is
used as input, so this must have been computed (either from nqrun,nqmrun with
-c set, or from crrun). If -m is not set, then the matrices of the action in
the file G.infmat must also be present. A modified Todd-Coxeter coset
enumeration is carried out of the relations of the group, and the difference
coefficients are output. This output is fairly bulky, and is used in crrun.
As in grrun, parameters associated with the enumeration can be input at the
terminal (suggested values:  1.5  50  +-10).
By setting the third of these negative, it is possible to use this
program to check the consistency of the given presentation. This considerably
increases the process time, and should not be necessary if everything is
working properly.

                             -----

(xviii) crrun
Source files:   crd.c crp1.c crp2.c matfns.c
Usage:    crrun [-m] gpname inf1 inf2 (if not -m inf3)
-m as for extprun.  No defaults.
The corestriction from G.inf2 to G.inf1 is computed and output to
G.inf1.er.  The files G.inf1.cp (output from conrun with -g set),
and G.inf2.ep (output from extprun on inf2) are used as input.
Furthermore, if -m is not set, then the file G.inf3mat (output from
matcalc with inf3 in third list) is used, where inf3 is the list of coset reps
of inf2 in inf1.
Warning: A temporary file "wrdlist" is generated, and then removed in the
course of the program. If the index is at all large, this file can be enormous.

                             -----

(xix) readrels
Source files: readrels.c
Usage:   readrels [-a/-s/-m] gpname [inf1]
Default: inf1 = sg
This is really two or three separate programs in one (determined by the option),
but it is convenient to lump them together. It is used when a Todd-Coxeter file
G.tc is present, and we want to compute the values of these particular relators
in M, in the extension being computed. To do this, the -f option should be used
in the initial run of egrun, so that the original generators are present in
G.sg.
It is run first with -a (append) set. This uses files G.tc, G.sg (to find the
numbers of the generators of G in the strong generatirng set). After
substituting the correct numbers for the generators, it replaces the relators
in the file G.sg.rel (which should already have been computed with grrun)
with those in the file  G.tc. The idea of this is so that the user can get the
final presentation of the extension in terms of the input presentation in G.tc,
rather than in terms of the arbitrary and perhaps not very useful presentation
computed by grrun, which uses the strong generators of G rather than the
defining generators. Of course, if G.tc is nor present, then the computed
presentation has to be used. (Of course, if this is done, then it will not be
possible to run extprun on the resulting gpname.sg.er file, but there is no
point in doing that anyway, except to check consistency.)
At the end of the computation of the extension, when G.sg.er is present, it is
run again (with -m set if computing multipliers). The values of the relators in
G.tc, together with the other obvious relators of the extension (for which
G.inmat is needed when -m is not set) are output both to the terminal and to
a file G.ext.tc. The generators of M are written as M[1], M[2], etc., and so
this file must be edited, and single letters substituted for M[i], before it
can be used as input to tcrun.
Finally, if -s is used, a presentation for the split extension is output. This
is a convenience to avoid too much typing in of relators by hand. Only G.tc
and G.inmat are needed as input in this case.
(It makes no sense to call any two or more of these options at once.)

                             -----

(xx) testmf
Source files:  testmf.c matfns.c
Usage:   testmf
For carrying out elementary matrix operations. Usage is self-explanatory.
Matrices can be read from a named file, and later listed on a named file. All
files listing matrices have prime, dimension, no. of matrices on line 1, and
the list of matrices follows.
These functions should work when 'prime' is any non-zero integer.
Matrices read from the terminal (but not from a file) may have arbitrary
entries, and the program will bring them into range 0<=x<p-1.

                             -----

(xxi) testpf
Source files:  testpf.c permfns.c
Usage:   testpf
Similar to testmf, but for operations on permutations.
Permutations and base points may be read from an initial file, or from the
terminal. Further permutations may later be read from other files, but of
course the number of points npt must remain fixed throughout the run. To test
the order of subgroups when a base is known for the whole group, "gprun -b"
may be run from within testpf.

                             -----

(xxii) subdir
Source files:  subdir.c
Usage:   subdir inf1 inf2 outf
A subdirect product of the groups in files inf1 and inf2 (full names), which
must both be in standard format, is constructed, and output in format 0 to file
outf. The combinations of perms in the first group which go together with
those in the second can be chosen, and any of these may be the identity.

                             -----

(xxiii) wreath
Source files:  wreath.c
Usage:   wreath inf1 inf2 outf
The wreath product of the groups in files inf1 and inf2 (full names), which
must both be in standard format, is constructed, and output in format 0 to file
outf.
(I think it only gives the right answer when the groups are transitive!)

                             -----

(xxiv) permmat
Source files:  permmat.c
Usage:  permmat [-u] [-l] [-h] gpname [inf] [outf]
Defaults:  inf=inperm,  outf=inmat.
The permutation matrices of the permutations in inf are computed, and output
to outf. If -u is set, they are computed modulo  b(1)+...+b(n), if -l is set,
they are computed for the submodule spanned by b(2)-b(1),...,b(n)-b(1), and
if -h is set (only possible if prime divides degree), both are true (the 
'heart' is computed). The prime is input at the terminal.

                             -----

(xxv) tcrun
Source files: tcd.c tcp.c
          or: tcdb.c tcpb.c
Usage: tcrun [-r]
   or: tcrunb
A simple Todd-Coxeter coset enumeration program (LHT+lookahead). Usage is self-
explanatory. Permutations may be output in the format of G.inperm. (format 0).
If -r is set, then the space available in the coset table may be reduced by
the user, to test lookahead performance.
The version tcrunb has more space declared. The difference is that coset
numbers are stored as  int rather than short.

                             -----

(xxvi) pkrun
Source files: pkd.c pkp.c pkmatfns.c
Usage: pkrun [-f] [-i] [-o] [-a] gpname [inf]
Default: inf=inmat
This program determines whether the module generated by the matrices in inf is
irreducible. If not, then matrices generating a subspace and quotient space
are output to infs and infq respectively. First a random element of the group
algebra must be selected. One should be found with small but nontrivial
nullity as a matrix. If -f is called, then output is not as above, but
transformed matrices for the full space are output to infs. If -i is called,
more information is printed on the terminal.
if -a is set, the choice of whether to use the chosen element of the group
algebra is made automatically depending on the nullity being smaller than a
dimension given at the start.
If -o is set, then the user has the choice of continuing and not outputting
after a particular element of the null space generates a proper subspace. If
both -i and -o are set, then any particular null space element may be 
skipped over completely, without computing the subspace generated. These
facilites are useful when investigating splitting or isomorphisms, rather
than irreducibility.

                             -----

(xxvii) tens
Source files: tens.c
Usage: tens [-e] [-w] gpname inf1 (inf2) outf
No defaults.
The tensor product of the matrix representations of the group in inf1 and inf2
is computed and output to outf. if -e is set, the representations are taken to
be equal. If -w is set, the wedge product of inf1 is computed. If either
option is set, inf2 is not named, but otherwise inf1 and inf2 must have the
same characteristic, and the same number of generators.

                             -----

(xxviii) matsum
Source files: matsum.c
Usage: matsum gpname inf1 inf2 outf
No defaults.
The sum of the matrix representations of the group in inf1 and inf2 is
computed and output to outf. They must have the same characteristics and
numbers of generators.
                             -----
