This manual describes the DESIGN 1.1 package for GAP 4.4. The DESIGN package is for generating, classifying and studying block designs.
All DESIGN functions are written entirely in the GAP language. However, DESIGN requires the GRAPE package Grape to be installed, and makes use of certain GRAPE functions, some of which make use of B. D. McKay's nauty (Version 2.0b5) package 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 GAPDoc, if you want to read lists of designs in the http://designtheory.org external representation format (see Extrep).
Except for the function SmallestImageSet
, which is Copyright
© Steve Linton 2003, the DESIGN package is Copyright
© Leonard H. Soicher 2003--2004. DESIGN is part of an EPSRC
funded project to provide a web-based resource for design theory; see
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 http://www.gnu.org/licenses/gpl.html
If you use DESIGN to solve a problem then please send a short email about it to L.H.Soicher@qmul.ac.uk, and reference the DESIGN package as follows:
Leonard H. Soicher, The DESIGN package for GAP, http://designtheory.org/software/gap_design/.
The DESIGN package only runs properly on a UNIX system. Before installing DESIGN (on your UNIX system), you must make sure that the GRAPE and GAPDoc packages are fully installed.
To install DESIGN 1.1 (after installing GAP, GRAPE and
GAPDoc), first obtain the DESIGN archive file design1r1.tar.gz
,
available from 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
GAP Root Directory). Now go to the appropriate pkg
directory
containing design1r1.tar.gz
, and then run
gunzip design1r1.tar.gz tar -xf design1r1.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 L.H.Soicher@qmul.ac.uk, where you should also send any comments or bug reports.
Before using DESIGN you must load the package within GAP by calling the statement
gap> LoadPackage("design"); true
A block design is a pair (X,B), where X is a non-empty finite set whose elements are called points, and B is a non-empty finite multiset whose elements are called blocks, such that each block is a non-empty finite multiset of points.
DESIGN deals with arbitrary block designs. However, at present, some DESIGN functions only work for binary block designs (i.e. those with no repeated element in any block of the design), but these functions will check if an input block design is binary.
In DESIGN, a block design D is stored as a record, with mandatory
components isBlockDesign
, v
, and blocks
. The points of a block
design D are always 1,2,...,D
.v
, but they may also be given names
in the optional component pointNames
, with D
.pointNames[
i]
the name of point i. The blocks
component must be a sorted list
of the blocks of D (including any repeats), with each block being a
sorted list of points (including any repeats).
A block design record may also have some optional components which store
information about the design. At present these optional components include
isSimple
, isBinary
, isConnected
, r
, blockSizes
, blockNumbers
,
resolutions
, autGroup
, autSubgroup
, tSubsetStructure
,
allTDesignLambdas
, and pointNames
.
A non-expert user should only use functions in the DESIGN package to create block design records and their components.
To give you an idea of the capabilities of this package, we now give an extended example of an application of the DESIGN package, in which a nearly resolvable non-simple 2-(21,4,3) is constructed (for Donald Preece) via a pairwise-balanced design. All the DESIGN functions used here are described in this manual.
The program first discovers the unique (up to isomorphism) pairwise-balanced 2-(21,{4,5},1) design D invariant under H=langle(1,2,...,20)rangle, and then applies the McSorley-Soicher construction to this design D to obtain a non-simple 2-(21,4,3) design Dstar with automorphism group of order 80. The program then classifies the near-resolutions of Dstar invariant under the subgroup of order 5 of H, and finds exactly two such (up to the action of Aut(Dstar)). Finally, Dstar is printed.
gap> H:=CyclicGroup(IsPermGroup,20); Group([ (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) ]) gap> D:=BlockDesigns(rec(v:=21,blockSizes:=[4,5], > tSubsetStructure:=rec(t:=2,lambdas:=[1]), > requiredAutSubgroup:=H ));; gap> Length(D); 1 gap> D:=D[1];; gap> BlockSizes(D); [ 4, 5 ] gap> BlockNumbers(D); [ 20, 9 ] gap> Size(AutGroupBlockDesign(D)); 80 gap> Dstar:=TDesignFromTBD(D,2,BlockSizes(D));; gap> AllTDesignLambdas(Dstar); [ 105, 20, 3 ] gap> Size(AutGroupBlockDesign(Dstar)); 80 gap> near_resolutions:=PartitionsIntoBlockDesigns(rec( > blockDesign:=Dstar, > v:=21,blockSizes:=[4], > tSubsetStructure:=rec(t:=0,lambdas:=[5]), > blockIntersectionNumbers:=[[ [0] ]], > requiredAutSubgroup:=SylowSubgroup(H,5) ));; gap> Length(near_resolutions); 2 gap> List(near_resolutions,x->Size(x.autGroup)); [ 5, 20 ] gap> Print(Dstar,"\n"); rec( isBlockDesign := true, v := 21, blocks := [ [ 1, 2, 4, 15 ], [ 1, 2, 4, 15 ], [ 1, 2, 4, 15 ], [ 1, 3, 14, 20 ], [ 1, 3, 14, 20 ], [ 1, 3, 14, 20 ], [ 1, 5, 9, 13 ], [ 1, 5, 9, 17 ], [ 1, 5, 13, 17 ], [ 1, 6, 11, 16 ], [ 1, 6, 11, 21 ], [ 1, 6, 16, 21 ], [ 1, 7, 8, 10 ], [ 1, 7, 8, 10 ], [ 1, 7, 8, 10 ], [ 1, 9, 13, 17 ], [ 1, 11, 16, 21 ], [ 1, 12, 18, 19 ], [ 1, 12, 18, 19 ], [ 1, 12, 18, 19 ], [ 2, 3, 5, 16 ], [ 2, 3, 5, 16 ], [ 2, 3, 5, 16 ], [ 2, 6, 10, 14 ], [ 2, 6, 10, 18 ], [ 2, 6, 14, 18 ], [ 2, 7, 12, 17 ], [ 2, 7, 12, 21 ], [ 2, 7, 17, 21 ], [ 2, 8, 9, 11 ], [ 2, 8, 9, 11 ], [ 2, 8, 9, 11 ], [ 2, 10, 14, 18 ], [ 2, 12, 17, 21 ], [ 2, 13, 19, 20 ], [ 2, 13, 19, 20 ], [ 2, 13, 19, 20 ], [ 3, 4, 6, 17 ], [ 3, 4, 6, 17 ], [ 3, 4, 6, 17 ], [ 3, 7, 11, 15 ], [ 3, 7, 11, 19 ], [ 3, 7, 15, 19 ], [ 3, 8, 13, 18 ], [ 3, 8, 13, 21 ], [ 3, 8, 18, 21 ], [ 3, 9, 10, 12 ], [ 3, 9, 10, 12 ], [ 3, 9, 10, 12 ], [ 3, 11, 15, 19 ], [ 3, 13, 18, 21 ], [ 4, 5, 7, 18 ], [ 4, 5, 7, 18 ], [ 4, 5, 7, 18 ], [ 4, 8, 12, 16 ], [ 4, 8, 12, 20 ], [ 4, 8, 16, 20 ], [ 4, 9, 14, 19 ], [ 4, 9, 14, 21 ], [ 4, 9, 19, 21 ], [ 4, 10, 11, 13 ], [ 4, 10, 11, 13 ], [ 4, 10, 11, 13 ], [ 4, 12, 16, 20 ], [ 4, 14, 19, 21 ], [ 5, 6, 8, 19 ], [ 5, 6, 8, 19 ], [ 5, 6, 8, 19 ], [ 5, 9, 13, 17 ], [ 5, 10, 15, 20 ], [ 5, 10, 15, 21 ], [ 5, 10, 20, 21 ], [ 5, 11, 12, 14 ], [ 5, 11, 12, 14 ], [ 5, 11, 12, 14 ], [ 5, 15, 20, 21 ], [ 6, 7, 9, 20 ], [ 6, 7, 9, 20 ], [ 6, 7, 9, 20 ], [ 6, 10, 14, 18 ], [ 6, 11, 16, 21 ], [ 6, 12, 13, 15 ], [ 6, 12, 13, 15 ], [ 6, 12, 13, 15 ], [ 7, 11, 15, 19 ], [ 7, 12, 17, 21 ], [ 7, 13, 14, 16 ], [ 7, 13, 14, 16 ], [ 7, 13, 14, 16 ], [ 8, 12, 16, 20 ], [ 8, 13, 18, 21 ], [ 8, 14, 15, 17 ], [ 8, 14, 15, 17 ], [ 8, 14, 15, 17 ], [ 9, 14, 19, 21 ], [ 9, 15, 16, 18 ], [ 9, 15, 16, 18 ], [ 9, 15, 16, 18 ], [ 10, 15, 20, 21 ], [ 10, 16, 17, 19 ], [ 10, 16, 17, 19 ], [ 10, 16, 17, 19 ], [ 11, 17, 18, 20 ], [ 11, 17, 18, 20 ], [ 11, 17, 18, 20 ] ], blockSizes := [ 4 ], isBinary := true, allTDesignLambdas := [ 105, 20, 3 ], isSimple := false, autGroup := Group( [ ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20), ( 2,18,10,14)( 3,15,19, 7)( 4,12, 8,20)( 5, 9,17,13) ] ) )
Design manual