an algorithm for enumerating all difference sets in a group
Version 2.3.1
Released 2019-09-14
This project is maintained by Dylan Peifer
The DifSets Package is a GAP package implementing an algorithm for enumerating all difference sets up to equivalence in a group. The algorithm functions by finding difference sums, which are potential images of difference sets in quotient groups of the original group, and searching their preimages. In this way, the search space can be dramatically decreased, and searches of groups of relatively large order (such as order 64 or order 96) can be completed.
The package requires at least version 4.9 of GAP. Additional required GAP packages are GRAPE 4.7 and GAPDoc 1.5. The SmallGrp package is also recommended. These required packages are included with a standard install of GAP, and will be loaded automatically by the DifSets package.
As of July 2019, the DifSets package is not currently distributed with a
standard installation of GAP, but will be included in future releases. To
install, first download the archive and then unpack it in the pkg
directory of one of your GAP root directories. After installation, the package
can be loaded at the GAP command prompt by typing
gap> LoadPackage("DifSets");
after which the DifSets banner should appear on the screen.
After installation, basic tests of the package can by performed by running
gap> TestPackage("difsets");
at the GAP command prompt. Note that the package name must be in lowercase.
Documentation for the package can be found in the doc
subdirectory in html
form as chap0.html
and pdf form as manual.pdf
. Documentation can also be
accessed on the package website and through the standard GAP help system.
Documentation can be recompiled by running
gap makedoc.g
in this directory.
Results for the group with ID [v, n] in the SmallGroups library are found in
the file v-n.txt
in the directory data/groups/v
. At the top of each file is
a header with the ID of the group, the total number of inequivalent difference
sets found, and the time required for the computation. For example, the group
SmallGroup(64, 260) has 30 difference sets up to equivalence. These sets can be
found in the file data/groups/64/64-260.txt
. The header of this file
indicates that the computation took 40 hours, 5 minutes, and 38.020 seconds to
complete. A summary of timings is also listed in the file groups.csv
in the
data
directory.
The easiest way to access results is the LoadDifferenceSets
function. With
the package loaded you can, for example, type
gap> LoadDifferenceSets(16, 12);
[ [ 1, 2, 3, 4, 5, 12 ], [ 1, 2, 3, 4, 8, 15 ] ]
to return a list containing representatives for the two difference sets up to equivalence in SmallGroup(16, 12). For details, see the documentation.
The script difsets
, also available in the data
subdirectory, was used to
produce the result files. Calling
./difsets v n
will start a session of GAP, load the DifSets package, and compute the list of
inequivalent difference sets in SmallGroup(v, n). Output is then put in the
file v-n.txt
. For example,
./difsets 16 4
produces the file 16-4.txt
that contains all the inequivalent difference sets
in group [16, 4].
Copyright (C) 2017, 2019 Dylan Peifer
This program 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 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
For questions, comments, problems, and bugs, please contact the package author, Dylan Peifer, at djp282@cornell.edu.