                        The DESIGN Package for GAP

This README describes the {\DESIGN}~1.6 package for {\GAP} (version at
least 4.5).  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 (version
at least 4.4) to be installed, and makes use of certain {\GRAPE}
functions, some of which make use of B.D.~McKay's {\nauty} package.
These {\GRAPE} functions can only be used on a fully installed version
of {\GRAPE}.

The {\DESIGN} package is Copyright {\copyright} Leonard H. Soicher
2003--2011.  {\DESIGN} is part of a wider project, which received EPSRC
funding under grant GR/R29659/01, 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.6, 2011,
http://designtheory.org/software/gap_design/.

Any comments or bug reports should also go to
\Mailto{L.H.Soicher@qmul.ac.uk}.

Installing the DESIGN Package
-----------------------------

The {\DESIGN} package is included in the standard {\GAP}~4.5
distribution. You only need to download and install {\DESIGN} if you need
to install the package locally or are installing an upgrade of {\DESIGN}
to an existing installation of {\GAP} (see the main {\GAP} reference
section "Reference: Installing a GAP Package").  If you do need to download
{\DESIGN}, you can find archive files for the package in various formats
at \URL{http://www.gap-system.org/Packages/design.html}, and then your
archive file of choice should be downloaded and unpacked in the `pkg'
subdirectory of an appropriate GAP root directory (see the main {\GAP}
reference section "Reference: GAP Root Directory").

The {\DESIGN} package is written entirely in {\GAP} code, and requires
no further installation.  However, the {\DESIGN} package has complete
functionality only in an environment in which the {\GRAPE} package is
fully installed.  Usually this will be on a Unix system.

Main change from DESIGN 1.5 to DESIGN 1.6
-----------------------------------------

(1) Revised installation instructions.

Main changes from DESIGN 1.4 to DESIGN 1.5
------------------------------------------

(1) Added internal function: 
   DESIGN_IntervalForLeastRealZero

(2) Added user functions: 
   PointBlockIncidenceMatrix
   ConcurrenceMatrix
   InformationMatrix
   BlockDesignEfficiency

(3) Updated documentation, including documentation for
    the new user functions.

Main changes from DESIGN 1.3 to DESIGN 1.4
------------------------------------------

(1) Added function: AGPointFlatBlockDesign.

(2) Improved and documented the main features of function
SemiLatinSquareDuals, which can be used to classify (n x n)/k semi-Latin
squares and SOMA(k,n)s with given properties.

(3) Improved efficiency of function PGPointFlatBlockDesign.

(4) Made function TDesignLambdas faster, in particular in the case of
a point-transitive design, when that design's record includes a known
point-transitive subgroup of the design's automorphism group.

(5) Improved the (undocumented) function IsPossiblySBIBD so that
TDesignBlockMultiplicityBound now makes full use of the Bruck-Ryser-Chowla
Theorem when t=2 and k<v=b.

(6) Improved the speed of functions TDesignBlockMultiplicityBound and
ResolvableTDesignBlockMultiplicityBound by employing binary search to
find the bounds.

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 2011
