                        The DESIGN Package for GAP

This README describes the {\DESIGN}~1.3 package for {\GAP}.  The {\DESIGN}
package is for constructing, classifying, partitioning and studying
block designs.

All {\DESIGN} functions are written entirely in the {\GAP} language.
However, {\DESIGN} requires the {\GRAPE} package to be installed,
and makes use of certain {\GRAPE} functions, some of which make use of
B.D. McKay's {\nauty}.  These {\GRAPE} functions can only be used on
a fully installed version of {\GRAPE} in a UNIX environment. {\DESIGN}
also requires the {\GAPDoc} package, if you want to read lists of designs
in the \URL{http://designtheory.org} external representation format.

The {\DESIGN} package is Copyright {\copyright} Leonard H. Soicher
2003--2006.  {\DESIGN} is part of a wider project, which was funded
by EPSRC, to provide a web-based resource for design theory; see
\URL{http://designtheory.org}.

{\DESIGN} is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. For details, see 
\URL{http://www.gnu.org/licenses/gpl.html}

If you use {\DESIGN} to solve a problem then please send a short email
about it to \Mailto{L.H.Soicher@qmul.ac.uk}, and reference the {\DESIGN} 
package as follows:

L.H. Soicher, The DESIGN package for GAP, Version 1.3, 2006,
http://designtheory.org/software/gap_design/.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                Installing the DESIGN Package

The {\DESIGN} package only runs properly on a UNIX system. Before
installing {\DESIGN} (on your UNIX system), you must make sure that
{\GAP} (version at least 4.4) is installed as well as its {\GRAPE}
(version at least 4.2) and {\GAPDoc} (version at least 0.99) packages.

To install {\DESIGN} 1.3 (after installing {\GAP}, {\GRAPE} and
{\GAPDoc}), first obtain the {\DESIGN} archive file `design1r3.tar.gz',
available from \URL{http://designtheory.org/software/gap_design/}
and then copy this archive file into the `pkg' directory of the {\GAP}
root directory. Actually, it is possible to have several {\GAP} root
directories and so it is easy to install {\DESIGN} locally even if you
have no permission to add files to the main {\GAP} installation (see
"ref:GAP Root Directory").  Now go to the appropriate `pkg' directory
containing `design1r3.tar.gz', and then run

gunzip design1r3.tar.gz
tar -xf design1r3.tar

That's all there is to do.

Both dvi and pdf versions of the {\DESIGN} manual are available
(as `manual.dvi' and `manual.pdf' respectively) in the `doc' directory
of the home directory of {\DESIGN}.

If you install {\DESIGN}, then please tell
\Mailto{L.H.Soicher@qmul.ac.uk}, where you should also send any comments
or bug reports.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Main changes from DESIGN 1.2 to DESIGN 1.3
------------------------------------------

(1) Added function: WittDesign.

(2) Fixed a bug which caused a break loop to be entered in certain cases
in function BlockDesigns when the least element of blockSizes was equal
to tSubsetStructure.t.

(3) Fixed a rarely occurring bug which caused no designs to be returned
in function BlockDesigns in certain cases when the designs had just one
block each.

(4) Small improvements made to the documentation and the code.

Main changes from DESIGN 1.1 to DESIGN 1.2
------------------------------------------

(1) Added functions:
   BlockIntersectionPolynomial
   BlockIntersectionPolynomialCheck
   TDesignLambdas
   TDesignLambdaMin
   TDesignIntersectionTriangle
   SteinerSystemIntersectionTriangle
   TDesignBlockMultiplicityBound
   ResolvableTDesignBlockMultiplicityBound
   BlockDesignPoints
   NrBlockDesignPoints
   BlockDesignBlocks
   NrBlockDesignBlocks
   PairwiseBalancedLambda
   AffineResolvableMu
   DeletedPointsBlockDesign
   DeletedBlocksBlockDesign
   AddedPointBlockDesign
   AddedBlocksBlockDesign
   DerivedBlockDesign
   ResidualBlockDesign

(2) The function BlockDesign can now (optionally) construct a block
design from base blocks and a group of automorphisms, and the list 
of blocks given to BlockDesign need no longer be sorted.

(3) Improved documentation of the function TDesignFromTBD, and changed
the parameters (in a backward compatible way) to match the description
of the "*-construction" in the McSorley-Soicher paper.

(4) The (undocumented) resolveSimple option removed from functions
BlockDesigns and PartitionsIntoBlockDesigns, and the option b added
to these functions (to specify the number of blocks in a required block
design or partition part). 

(5) Improvements made to the use of store (and time?) by the function 
BlockDesigns.

Main changes from DESIGN 1.0 to DESIGN 1.1
------------------------------------------

(1) Made compatible with GAP 4.4 and its package loading mechanism.
DESIGN 1.1 works only with GAP 4.4/GRAPE 4.2/GAPDoc.

(2) Upgraded XML I/O to DTRS protocol 2.0.

(3) BlockDesignsToXMLFile has additional parameters to allow more user
control over expansion, output, and design id's. The default now is for
minimal expansion and writing out, which is a *change* from DESIGN 1.0.

(4) Added functions:
   BlockDesignIsomorphismClassRepresentatives,
   DualBlockDesign,
   ComplementBlocksBlockDesign.

(5) Function names made read-only.

(6) Some utility functionality moved to GRAPE 4.2.

(7) Added files README and gpl.txt.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Leonard Soicher
Queen Mary, University of London
November 2006
