The ``signature'' of a subset S ⊆ G of a group relative to a normal subgroup U is the multiset of numbers of elements S contains from each coset modulo U. Possible values of these numbers can be calculated a priori for relative difference sets.
gap> sigdat:=SignatureData(Gdata,N,k,lambda,10^5);;
The argument 105 depends on your degree of impatience. Larger numbers take more time in this step, but give better results for later reduction steps.
Now we will look for a ``nice'' normal subgroup. A normal subgroup is ``nice'', if it has only few signatures and the number of different entries in each signature is low. If you have different choices here do some experiments, to see what works. Let's see what we have:
gap> NormalSgsHavingAtMostNSigs(sigdat,1,[1..7]); [ rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f3 ]) ), rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f4 ]) ), rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f3*f4 ]) ), rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f3*f4^2 ]) ) ]
The second parameter of NormalSgsHavingAtMostNSigs
is the maximal
number of signatures the subgroup may have. The second parameter gives
the desired lengths of the signatures (the index of the normal
subgroup).
So in this example we have no real choice. Let's take the first group
for U. The signature means that we have to get 3 elements from
each coset modulo U. So we generate startsets of length 2 in the
trivial coset U (representing partial relative difference sets of
length 3). The function StartsetsInCoset
generates startsets in U by
generating an initial set of startsets and then raising the length of
each startset by 1. Then a reduction using signatures and
automorphism is performed. This is done until all startsets have the
desired length or no startset remains (in which case there is no
relative difference set). For the reduction, a suitable set of
automorphisms must be chosen. This is done by the function
SuitableAutomorphismsForReduction
:
gap> U:=last[1].subgroup; Group([ f1, f2, f3 ]) gap> auts:=SuitableAutomorphismsForReduction(Gdata,U); [ <permutation group of size 303264 with 8 generators> ] gap> startsets:=StartsetsInCoset([],U,N,2,auts,sigdat,Gdata,lambda); #I Size 18 #I 1/ 0 @ 0:00:00.328 #I Size 8 #I 1/ 0 @ 0:00:00.180 [ [ 4, 22 ] ]
For larger examples, this takes a wile. Taking 106 (or even more)
for the generation of sigdat can save some time here. A few remarks
about the parameters of StartsetsInCoset
. The first parameter []
is the set of startsets which we start with (as we just started, this
is empty). The second parameter is the coset we use to generate
startsets and third parameter is the forbidden subgroup. The fourth
parameter is the length of the startsets we want to generate (remember
that 1 is assumed to be in every startset without being listed. So
we want startsets of size 3 represented by lists of length 2.
Hence the 2 in this place). Instead of auts a suitable list of
groups of automorphisms of G in permutation representation may be
inserted. These are used for the reduction of startsets. For large
groups auts[1] it is a good idea to add some subgroups of auts[1]
to the list (ascending in order) auts, as the reduction is done
using the first group in the list and then reducing the already
reduced list again using the next group.
[Up] [Previous] [Next] [Index]
RDS manual