Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

612139 views
1
% This file was created automatically from sigs.msk.
2
% DO NOT EDIT!
3
\Chapter{Invariants for Difference Sets}
4
5
This chapter contains an important tool for the generation of
6
difference sets. It is called the ``coset signature'' and is an
7
invariant for equivalence of partial relative difference sets. For
8
large $\lambda$, there is an invariant calculated by
9
"MultiplicityInvariantLargeLambda". This invariant can be used
10
complementary to the coset signature and is explained in section
11
"RDS:An invariant for large lambda".
12
13
Most of the methods explained here are not commonly used. If you do
14
not want to know how coset signatures work in detail, you can safely
15
skip a large part of this and go straight to the explanation of
16
"SignatureDataForNormalSubgroups" and "ReducedStartsets".
17
18
The functions "RDSFactorGroupData", "MatchingFGData" will be
19
interesting for you, if you look for difference sets with the same
20
parameters in different gorups. "SignatureDataForNormalSubgroups" and
21
"SigInvariant"
22
23
The last section ("RDS:Blackbox functions") of this chapter has some
24
functions which allow the user to use coset signatures with even less
25
effort. But be aware that these functions make choices for you that
26
you probably do not want if you do very involved calculations. In
27
particular, the coset signatures are not stored globally and hence
28
cannot be reused. For a demonstration of these easy-to-use functions,
29
see chapter "RDS:A basic example"
30
31
%%%%%%%%%%%%%%%%%%%%
32
\Section{The Coset Signature}
33
34
Let $R \subseteq G$ be a (partial) relative difference set (for
35
definition see "Introduction") with forbidden set $N\subseteq G$. Let
36
$U\leq G$ be a normal subgroup and $C=\{g_1,\dots, g_{|G:U|}\}$ be a
37
system of representatives of $G/U$.
38
39
The intersection number of $R$ with $Ug_i$ is defined as $v_i=|R\cap
40
Ug_i|$. For every normal subgroup $U\leq G$ the multiset $\{|R\cap
41
Ug_i| \colon g_i\in C\}$ is called ``coset signature of $R$ (relative
42
to $U$)''.
43
44
Let $D\subseteq G$ be a relative difference set and
45
$\{v_1,\dots,v_{|G:U|}\}$ its coset signature. Then the following
46
equations hold (see \cite{Bruck55},\cite{RoederDiss}):
47
48
$$
49
\matrix{
50
\sum v_i=k\cr
51
\sum v_i^2=\lambda(|U|-|U\cap N|)+k\cr
52
\sum_j v_j v_{ij}=
53
\lambda(|U|-|g_iU \cap N|)&{\rm for }\ g_i\not\in U}
54
$$
55
where $v_{ij}=|D\cap g_ig_jU|$. If the forbidden set $N$ is a
56
subgroup of $G$ we have $|g_iU\cap N|$ is either $0$ or equal to
57
$|U\cap N|$.
58
59
Given a group $G$, the forbidden set $N\subseteq G$ and some normal
60
subgroup $U\leq G$, the right sides of this equations are known. So we
61
may ask for tuples $(v_1,\dots,v_{|G:U|})$ solving this system of
62
equations. Of course, we index the $v_i$ with the elements of $G/U$,
63
so the last equation poses conditions to the ordering of the tuple
64
$(v_1,\dots,v_{|G:U|})$.
65
66
So we call any multiset $\{v_1,\dots,v_{|G:U|}\}$ solving the above
67
equations an ``admissible signature'' for $U$.
68
69
%In \GAP, admissible signatures are represented by lists as returned by
70
%`Collected'
71
72
\>CosetSignatureOfSet( <set>, <cosets> ) F
73
74
`CosetSignatureOfSet( <set>,<cosets>)' returns the *ordered list* of
75
intersection numbers of <set>. That is, the size of the intersection
76
of <set> with each Element of <cosets>.
77
78
Note that it is not tested, if <cosets> is really a list of cosets.
79
`CosetSignatureOfSet( <set>,<cosets>)' works for any List <set> and any
80
list of lists <cosets>. So be careful!
81
82
83
\beginexample
84
gap> G:=SymmetricGroup(5);;
85
gap> A:=AlternatingGroup(5);;
86
gap> CosetSignatureOfSet([(1,2),(1,5),(1,2,3)],RightCosets(G,A));
87
[ 1, 2 ]
88
gap> CosetSignatureOfSet([(1,2),(1,5),(1,2,3)],[A]);
89
[ 1 ]
90
gap> CosetSignatureOfSet([(1,2),(1,5),(1,2,3)],[[(1,2),(1,2,3)],[(3,2,1)]]);
91
[ 0, 2 ]
92
\endexample
93
94
95
\>CosetSignatures( <Gsize>, <Usize>, <diffsetorder> ) O
96
\>CosetSignatures( <Gsize>, <Nsize>, <Usize>, <Intersectsizes>, <k>, <lambda> ) O
97
98
`CosetSignatures( <Gsize>,<Usize>,<diffsetorder>)' returns all
99
$<Gsize>/<Usize>$ tuples such that the sum of the squares of each tuple
100
equals <Usize>+<diffsetorder>. And the sum of each tuple equals
101
<diffsetorder>+1.
102
103
These are necessary conditions for signatures of difference sets and
104
normal subgroups of order <Usize> in groups of order <Gsize> (see "The
105
Coset Signature").
106
107
`CosetSignatures( <Gsize>,<Nsize>,<Usize>,<Intersectsizes>,<k>,<lambda>)'
108
Calculates all multiset meeting some conditions for signatures of relative
109
difference sets and normal subgroups of order <Usize> in groups of
110
order <Gsize> (see "The Coset Signature").
111
Here <Nsize> is the size of the forbidden group,
112
<Intersectsizes> is a list of integers determining the size of the
113
intersection of the forbidden set and the normal Subgroup of order <Usize>.
114
The pararmeters <k> and <lambda> are the usual ones for designs.
115
`CosetSignatures' returns a list containing one pair for each entry <i> of
116
<Intersectsizes>. The first entry of this pair is
117
$[<Gsize>,<Nsize>,<Usize>,<i>,<k>,<lambda>]$ and the second one is a list
118
of admissible signatures with these parameters.
119
120
121
\beginexample
122
gap> CosetSignatures(256,16,64,[1,4,8,16],17,1);
123
[ [ [ 256, 16, 64, 1, 17, 1 ], [ ] ],
124
[ [ 256, 16, 64, 4, 17, 1 ], [ [ 3, 4, 4, 6 ] ] ],
125
[ [ 256, 16, 64, 8, 17, 1 ], [ [ 4, 4, 4, 5 ] ] ],
126
[ [ 256, 16, 64, 16, 17, 1 ], [ ] ] ]
127
#And for an ordinary difference set of order 16.
128
gap> CosetSignatures(273,1,39,[1],17,1);
129
[ [ [ 273, 1, 39, 1, 17, 1 ],
130
[ [ 0, 1, 2, 3, 3, 4, 4 ], [ 0, 2, 2, 2, 3, 3, 5 ],
131
[ 1, 1, 1, 2, 4, 4, 4 ], [ 1, 1, 1, 3, 3, 3, 5 ],
132
[ 1, 1, 2, 2, 2, 4, 5 ] ] ] ]
133
\endexample
134
135
\>TestSignatureLargeIndex( <sig>, <group>, <Normalsg>[, <factorgrp>] ) O
136
137
*this does only work for ordinary difference sets, not for
138
relative difference sets in general*
139
140
`TestSignatureLargeIndex(<sig>,<group>,<Normalsg>[,<factorgrp>])' tests
141
if <sig> meets some necessary conditions of "The Coset Signature" to be
142
a signature for a difference set in <group> for the normal subgroup
143
<Normalsg>. <factorgrp> is the factorgroup <group>/<Normalsg>.
144
The returned value is <true> or <false> resp.
145
146
147
148
\>TestSignatureCyclicFactorGroup( <sig>, <Nsize> ) O
149
150
*This does only work for ordinary difference sets, not for relative
151
difference sets in general*
152
153
`TestSignatureCyclicFactorGroup(<sig>,<Nsize>)' test if <sig> meets
154
meets some necessary conditions of "The Coset Signature" to be a signature
155
for a difference set in some group, which has a normal subgroup of
156
size <Nsize> such that the factor group is cyclic.
157
The returned value is <true> or <false> resp.
158
159
160
161
\>TestedSignatures( <sigs>, <group>, <Normalsg>[, <maxtest>][, <moretest>] ) O
162
163
*this does only work for ordinary difference sets, not for
164
relative difference sets in general*
165
166
Let <sigs> be a list of possible signatures as returned by
167
"CosetSignatures". Let <Normalsg> be a subgroup of <group>.
168
For each signature in <sigs>, the necessary conditions described in
169
"The Coset Signature" are tested to decide
170
if the signature can be a signature of a difference set in <group> for
171
for the normal subgroup <Normalsg>.
172
173
As this involves computation for all permutations of the signature, this
174
can be very costly. The argument <maxtest> determines how many
175
permutations are admissible. If <maxtest>=0, all signatures are tested,
176
regardless of how much work is necessary for this. If a signature has
177
too many permutations, it is returned without test. Even though it is
178
not wise, `<maxtest>=0' is the default option.
179
If `InfoLevel(InfoRDS)'\index{InfoRDS@{\tt InfoRDS}} is at least $2$,
180
information about skipped signatures is echoed.
181
182
If the boolean value <moretest> is <false> and all signatures in <sigs> but
183
the last one are found to be not admissible, the last one is returned
184
without test. This saves the time to test the last signature, but if
185
chances are that there is no difference set in <group>, this may also
186
give away a chance to find out early (every difference set has
187
signatures, so no admissible signature means that no difference set can
188
exist). Default is <true>.
189
190
191
`TestedSignatures' calls "TestSignatureCyclicFactorGroup" or
192
"TestSignatureLargeIndex" and returns a sublist of <sigs>.
193
194
195
196
\beginexample
197
gap> G:=SmallGroup(273,2);;
198
gap> N:=First(NormalSubgroups(G),g->Order(g)=39);
199
Group([ f1, f3 ])
200
gap> sigs:=CosetSignatures(273,1,39,[1],17,1);
201
[ [ [ 273, 1, 39, 1, 17, 1 ],
202
[ [ 0, 1, 2, 3, 3, 4, 4 ], [ 0, 2, 2, 2, 3, 3, 5 ],
203
[ 1, 1, 1, 2, 4, 4, 4 ], [ 1, 1, 1, 3, 3, 3, 5 ],
204
[ 1, 1, 2, 2, 2, 4, 5 ] ] ] ]
205
gap> TestedSignatures(sigs[1][2],G,N);
206
[ [ 1, 1, 1, 2, 4, 4, 4 ], [ 1, 1, 1, 3, 3, 3, 5 ] ]
207
\endexample
208
209
\>TestedSignaturesRelative( <sigs>, <fgdata>, [, <maxtest>][, <moretest>] ) O
210
211
`TestedSignaturesRelative' takes a list <sigs> of lists of integers and
212
returns a those which may be signatures of relative difference sets with
213
forbidden set.
214
215
<fgdata> is a record as returned by
216
`RDSFactorGroupData(<U>,<N>,<lambda>,<Gdata>)'
217
If <maxtest> is set, a signature $s$ is only tested if
218
`NrPermutationsList(s)'
219
is less than <maxtest> if <maxtest> is set to 0, all signatures are tested
220
this is the default.
221
If <moretest> is tue, a signature is tested even if it is the only one left.
222
This means we do not assume that there must be an admissable signature at all.
223
The default for <moretest> is <true>.
224
225
226
227
\>SigInvariant( < diffset >, <data> ) O
228
229
Given a partial relative difference set <diffset> and a list of
230
records with entries <cosets> and <sigs>.
231
Here <cosets> is a full list of cosets and <sigs> is a list of
232
signatures that may occur for relative difference sets.
233
234
For each record <rec> in <data>, the intersection numbers of
235
<diffset> with the cosets of <rec.cosets> are computed stored in
236
a set <sig>. If none of the signatures in <rec.sigs> is pointwise
237
greater or equal <sig>, `SigInvariant( <diffset>,<data>) returns `fail'.
238
Otherwise <sig> is added to a list of signatures that is returned.
239
240
Note the returned invariant is that of $diffset\cup \{1\}$.
241
The output from `SignatureDataForNormalSubgroups' can be used as <data>.
242
243
244
245
\beginexample
246
gap> G:=SmallGroup(273,2);
247
<pc group of size 273 with 3 generators>
248
gap> Gdata:=PermutationRepForDiffsetCalculations(G);;
249
gap> N:=First(NormalSubgroups(G),g->Order(g)=39);
250
Group([ f1, f3 ])
251
gap> sigs:=CosetSignatures(273,1,39,[1],17,1);
252
[ [ [ 273, 1, 39, 1, 17, 1 ],
253
[ [ 0, 1, 2, 3, 3, 4, 4 ], [ 0, 2, 2, 2, 3, 3, 5 ],
254
[ 1, 1, 1, 2, 4, 4, 4 ], [ 1, 1, 1, 3, 3, 3, 5 ],
255
[ 1, 1, 2, 2, 2, 4, 5 ] ] ] ]
256
gap> TestedSignatures(sigs[1][2],G,N);
257
[ [ 1, 1, 1, 2, 4, 4, 4 ], [ 1, 1, 1, 3, 3, 3, 5 ] ]
258
gap> sigs:=TestedSignatures(sigs[1][2],G,N);
259
[ [ 1, 1, 1, 2, 4, 4, 4 ], [ 1, 1, 1, 3, 3, 3, 5 ] ]
260
gap> ## calculate cosets in permutation notation:
261
gap> rc:=List(RightCosets(G,N),i->GroupList2PermList(Set(i),Gdata));;
262
gap> data:=[rec(cosets:=rc,sigs:=sigs)];;
263
gap> SigInvariant([3,4,5],data);
264
[ [ [ 0, 0, 0, 0, 0, 1, 3 ], 1 ] ]
265
\endexample
266
267
For an example using "SignatureDataForNormalSubgroups" see the example
268
after "RDS:ReducedStartsets" below.
269
270
\>SignatureDataForNormalSubgroups( <Normals>, <globalSigData>, <forbiddenSet>, <Gdata>, <parameters> ) O
271
272
Let <Gdata> be a record as returned by "PermutationRepForDiffsetCalculations".
273
Let <Normals> be a list of normal subgroups of <Gdata.G>, and <forbiddenSet> the forbidden set
274
(as set of group elements or group).
275
276
<parameters> must be a list of length 4 of the form <[k,lambda,maxtest,moretest]>
277
with <k> the length of the relative difference set to be constructed and <lambda> the parameter
278
as always. <maxtest> and <moretest> are passed to `TestedSignaturesRelative' and must be set.
279
280
`SignatureDataForNormalSubgroups' returns a list containing one record for each group $U$ in
281
<Normals>. This record contains:
282
\beginlist
283
\item{1.} the subgroup <U> named <.subgroup>
284
\item{2.} the signatures <.sigs> for <U>
285
\item{3.} the cosets <.cosets> modulo <U> as lists of integers
286
\endlist
287
288
Moreover, the list <globalSigData> is used to store global information which can be
289
reused with other groups. The $i^{th}$ entry of <globalSigData> is a list of records
290
that contains all known information about subgroups of order $i$.
291
Each of these records has the following components:
292
\beginlist
293
\item{1.} <.cspara> the parameters for "CosetSignatures"
294
\item{2.} <.sigs> the output of "CosetSignatures" when the input is <.cspara>
295
\item{3.} <.fgsigs> a list of records containing data about factor groups with parameters <.cspara>:
296
\beginlist
297
\item{3.1.} <.fg> the factor group
298
\item{3.2.} <.fgaut> the automorphism group of <.fg>
299
\item{3.3.} <.Nfg> the image of the forbidden set $N$ under the natural epimorphism to <.fg>
300
\item{3.4.} <.fgintersect> the pairs $[g,|g\cap N| ]$ for all $g$ in <.fg>. Here $N$ is the forbidden set.
301
\item{3.5.} <.sigs> the known admissible signatures (this is a subset of the set in number 2.
302
of course)
303
\endlist
304
\endlist
305
306
The list <globalSigData> can be used if different groups are studied. If a group has a normal
307
subgroup with parameters (in the sense of <.cspara>) listed in <globalSigData>, the signatures
308
from a previous calculation may be used. Of course, the factor groups have to be checked first.
309
This check is done with "MatchingFGData" or "MatchingFGDataNonGrp".
310
311
So the second run of `SignatureDataForNormalSubgroups' with the same parameters and different
312
<Gdata> and <Normals> will normally be much faster, as the signatures are already stored in
313
<globalSigData>. Note that <maxtest> and <moretest> are not stored. So a second run with
314
larger <maxtest> will not result in a recalculation of signatures.
315
316
317
318
319
\beginexample
320
gap> G:=CyclicGroup(57);
321
<pc group of size 57 with 2 generators>
322
gap> Gdata:=PermutationRepForDiffsetCalculations(G);;
323
gap> SignatureDataForNormalSubgroups(NormalSubgroups(Gdata.G),sigdata,
324
> [One(Gdata.G)],Gdata,[8,1,10^6,true]); # for ordinary diffset of order 7.
325
[ rec( subgroup := Group([ f1*f2^6 ]),
326
sigs := [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2 ] ],
327
cosets := [ [ 1, 20, 40 ], [ 3, 23, 43 ], [ 6, 26, 46 ], [ 9, 29, 49 ],
328
[ 12, 32, 52 ], [ 15, 35, 55 ], [ 18, 38, 57 ],
329
[ 4, 21, 41 ], [ 7, 24, 44 ], [ 10, 27, 47 ],
330
[ 13, 30, 50 ], [ 16, 33, 53 ], [ 19, 36, 56 ],
331
[ 2, 22, 39 ], [ 5, 25, 42 ], [ 8, 28, 45 ], [ 11, 31, 48 ],
332
[ 14, 34, 51 ], [ 17, 37, 54 ] ] ),
333
rec( subgroup := Group([ f2 ]), sigs := [ [ 1, 3, 4 ] ],
334
cosets := [ [ 1, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42,
335
45, 48, 51, 54 ],
336
[ 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50,
337
53, 56 ],
338
[ 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49,
339
52, 55, 57 ] ] ) ]
340
gap> Filtered([1..Size(sigdata)],i->IsBound(sigdata[i]));
341
[ 3, 19 ]
342
gap> Size(sigdata[3]);
343
2
344
gap> sigdata[3][1].cspara;sigdata[3][2].cspara;
345
[ 57, 1, 3, 1, 7, 1 ]
346
[ 57, 1, 3, 1, 8, 1 ]
347
\endexample
348
349
The following three functions are used by
350
"SignatureDataForNormalSubgroups". If you do not want to write your
351
own function for signature management, you might not need them.
352
353
\>RDSFactorGroupData( <U>, <N>, <lambda>, <Gdata> ) O
354
355
takes the subgroup <U> of <G>, the forbidden set <N> as a subgroup or
356
subset of <G> and the record of data <Gdata> as returned by
357
`PermutationRepForDiffsetCalculations(<G>)' and returns a record containing
358
\beginlist
359
\item{.fg} the factor group modulo <U>
360
\item{.fglist} the factor group as a strictly ordered list
361
\item{.cosets} the cosets modulo <U> as lists of integers
362
\item{.lambda} the parameter <lambda> as passed to the function
363
\item{.Usize} the size of <U>
364
\item{.fgaut} the automorphism group of <.fg>
365
\item{.Nfg} the image of <N> in <.fg>
366
\item{.fgintersect} a list of pairs such that the $i^{th}$ entry is the
367
pair consisting of <.fg[i]> and the size of the intersection of <.fg> with
368
<.Nfg> as cosets modulo <U>.
369
\item{.intersectshort} ist just the second component of <.fgintersect>.
370
\endlist
371
372
373
374
\>MatchingFGDataNonGrp( <fgdatalist>, <fgmatchdata> ) O
375
376
Let <fgdatalist> be a list of records and <fgmatchdata> a record with components
377
<.fg>, <.Nfg> and <.fgintersect> as returned by "RDSFactorGroupData".
378
Then `MatchingFGDataNonGrp' returns the entry of <fgdatalist> that defines
379
the same admissible signatures as <fgmatchdata>. If no such entry exists,
380
`fail' is returned.
381
382
The forbidden set $N$ is not assumed to be a group.
383
384
385
386
\>MatchingFGData( <fgdatalist>, <fgmatchdata> ) O
387
388
Let <fgdatalist> be a list of records and <fgmatchdata> a record with components
389
<.fg>, <.Nfg>, <.fgintersect> and <.fgaut> as returned by "RDSFactorGroupData".
390
Then `MatchingFGDataNonGrp' returns the entry of <fgdatalist> that defines
391
the same admissible signatures as <fgmatchdata>. If no such entry exists,
392
`fail' is returned.
393
394
Here the forbidden set $N$ has to be a group.
395
396
397
398
\>ReducedStartsets( <startsets>, <autlist>, <csdata>, <Gdata> ) O
399
\>ReducedStartsets( <startsets>, <autlist>, <func>, <Gdata> ) O
400
401
Let <startsets> be a set of partial relative difference sets, <autlist> a
402
list of permutation groups and <Gdata> record returned by
403
`PermutationRepForDiffsetCalculations'.
404
Then `ReducedStartsets' partitions the list <startsets> according to the
405
values of the function <func> and performs a test for equivalence on the
406
elements of the partition. The list returned is a sublist
407
of <startsets> of pairwise non-equivalent partial relative difference sets
408
if <func> is an invariant for partial relative difference sets. All elements
409
for which <func> returns `fail' are discarded.
410
411
If a list <csdata> of records as used for "SigInvariant" (i.e. containing
412
<.cosets> and <.signatures>) is pased, then `ReducedStartsets'
413
uses "SigInvariant" for <func>.
414
415
416
417
\beginexample
418
gap> G:=CyclicGroup(57);
419
<pc group of size 57 with 2 generators>
420
gap> Gdata:=PermutationRepForDiffsetCalculations(G);;
421
gap> cosetsigs:=SignatureDataForNormalSubgroups(NormalSubgroups(Gdata.G),
422
> sigdata, [One(Gdata.G)],Gdata,[8,1,10^6,true]);;
423
gap> SigInvariant([3,4,5,9],cosetsigs);
424
[ [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 ], 1 ], [ [ 1, 1, 3 ], 1 ] ]
425
gap> ssets:=AllDiffsets([],2,[],Gdata);;
426
gap> Size(ssets);
427
1458
428
gap> Size(ReducedStartsets(ssets,[Group(())],cosetsigs,Gdata));
429
#I Size 1458
430
#I 5/ 0 @ 0:00:00.126
431
486
432
gap> Size(ReducedStartsets(ssets,[Gdata.Ai],cosetsigs,Gdata));
433
#I Size 1458
434
#I 5/ 0 @ 0:00:00.123
435
17
436
\endexample
437
\>`MaxAutsizeForOrbitCalculation' V
438
439
In "ReducedStartsets", a bound is needed to decide if `Orbit' or
440
`RepresentativeAction' should be used. If the group is larger than
441
<MaxAutsizeForOrbitCalculation@RDS>, `RepresentativeAction' is used.
442
The default value for `maxAutsizeForOrbitCalculation' is $5*10^6$.
443
If you want to change it, you will have to edit the file `sigs.gd'.
444
445
446
447
448
449
%%%%%%%%%%%%%%%%%%%%%%
450
\Section{An invariant for large lambda}
451
452
\>MultiplicityInvariantLargeLambda( <set>, <Gdata> ) O
453
454
Let <set> be a partial relative difference set with $\lambda>1$.
455
Set `<P>:=AllPresentables(<set>,<Gdata>)' then the set of multiplicities
456
of <P> is an invariant for partial relative difference sets.
457
458
`MultiplicityInvariantLargeLambda' returns a list in a form as `Collected'
459
does.
460
461
462
463
\beginexample
464
gap> G:=CyclicGroup(7);;Gdata:=PermutationRepForDiffsetCalculations(G);;
465
gap> AllPresentables([2,3],Gdata);
466
[ 2, 3, 7, 2, 7, 6 ]
467
gap> MultiplicityInvariantLargeLambda([2,3],Gdata);
468
[ [ 1, 2 ], [ 2, 2 ] ]
469
\endexample
470
(Read this output as: two elements occur once and two occur twice).
471
472
This invariant can be used for "ReducedStartsets" complementary to the
473
signature invariant by defining
474
\begintt
475
gap> partfunc:=function(list)
476
> local sig;
477
> if sig=fail
478
> then return fail;
479
> fi;
480
> return [MultiplicityInvariantLargeLambda(list,Gdata),SigInvariant(list,sigdata)];
481
> end;
482
function( list ) ... end
483
\endtt
484
485
<partfunc> can then be passed to "ReducedStartsets". Of course,
486
<sigdata> has to be the list of records defining the coset signatures.
487
488
489
%%%%%%%%%%%%%%%%%%%%%%
490
\Section{Blackbox functions}
491
492
Here are a few functions used in chapter "RDS:A basic example". These
493
are meant as black boxes for quick tests. Some of them make choices
494
for you which might not be suitable to the chase you consider, so for
495
serious studies, consider using the more complicated-looking functions
496
above (an example for this comprises chapter "RDS:An Example
497
Program").
498
499
\>SignatureData( <Gdata>, <forbiddenSet>, <k>, <lambda>, <maxtest> ) F
500
501
Let <Gdata> be a record as returned by "PermutationRepForDiffsetCalculations".
502
Let <forbiddenSet> the forbidden set (as set or group).
503
504
<k> is the length of the relative difference set to be constructed and
505
<lambda> the usual parameter. <maxtest> is the
506
Then `SignatureData' calls "SignatureDataForNormalSubgroups" for
507
normal subgroups of order at least `RootInt(Gdata.G)'. Here <maxtest>
508
is an integer which determines how many permutations of a possible
509
signature are checked to be a sorted signature. Choose a value of at
510
least $10^5$. Larger numbers here normaly result in better results
511
when generating difference sets (making reduction more effective).
512
513
`SigntureData' chooses normal subgroups of <Gdata.G> and uses
514
"SignatureDataForNormalSubgroups" to calculate signature data. The global
515
data generated by "SignatureDataForNormalSubgroups" is just discarded.
516
517
518
\beginexample
519
gap> G:=CyclicGroup(57);;Gdata:=PermutationRepForDiffsetCalculations(G);;
520
gap> sigdat:=SignatureData(Gdata,[One(Gdata.G)],8,1,10^5);
521
[ rec( subgroup := Group([ f2 ]), sigs := [ [ 1, 3, 4 ] ],
522
cosets := [ [ 1, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54 ],
523
[ 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56 ],
524
[ 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 57 ] ] ) ]
525
\endexample
526
\>NormalSgsHavingAtMostNSigs( <sigdata>, <n>, <lengthlist> ) F
527
528
Let <sigdata> be a list as returned by "SignatureDataForNormalSubgroups", an
529
integer <n> and a list of integers <lengthlist>.
530
`NormalSgsHavingAtMostNSigs' filters <sigdata> and returns
531
a list of records with components .subgroup and .sigs
532
is returned, such that for every entry
533
.subgroup is a normal subgroup of index in <lengthlist> having at most <n>
534
signatures.
535
536
537
\>SuitableAutomorphismsForReduction( <Gdata>, <normalsg> ) F
538
539
Given a normal subgroup <normalsg> of <Gdata.G>, the function returns
540
a list containing the group of automorphisms of <Gdata.G> which
541
stabilizes all cosets modulo <normalsg>. This group is returned as a
542
group of permutations on <Gdata.Glist> (which is actually the right
543
regular representation).
544
The returned list can be used with "StartsetsInCoset".
545
546
547
\>StartsetsInCoset( <ssets>, <coset>, <forbiddenSet>, <aim>, <autlist>, <sigdat>, <Gdata>, <lambda> ) F
548
549
Assume, we want to generate difference sets ``coset by coset'' modulo some
550
normal subgroup.
551
Let <ssets> be a (possibly empty) set of startsets, <coset> the coset from
552
which to take the elements to append to the startsets from <ssets>.
553
Furthermore, let <aim> be the size of the generated partial difference sets
554
(that is, the size of the elements from <ssets> plus the number of elements
555
to be added from <coset>). Let <autlist> be a list of groups of
556
automorphisms (in permutation representation) to use with the reduction
557
algorithm. Here the output from `SuitableAutomorphismsForReduction' can be
558
used.
559
And <Gdata> and sigdat are the records as returned by
560
"PermutationRepForDiffsetCalculations" and
561
"SignatureDataForNormalSubgroups" (or "SignatureData", alternatively). The
562
parameter <lambda> is the usual one for difference sets (the number of ways
563
of expressing elements outside the forbidden set as quotients).
564
565
Then `StartsetsInCoset' returns a list of partial difference sets (a list of
566
lists of integers) of length <aim>.
567
568
The list of permutation groups <autlist> is used for equivalence testing.
569
Each equivalence test is performed calculating equivalence with respect
570
to the first group, one element per equivalence class is retained and the
571
equivalence test is repeated using the second group from <autlist>...
572
Using an ascending list of automorphism groups can speed up the process
573
of equivalence testing.
574
575
576
577
\beginexample
578
gap> G:=CyclicGroup(57);;Gdata:=PermutationRepForDiffsetCalculations(G);;
579
gap> sigdat:=SignatureData(Gdata,[One(Gdata.G)],8,1,10^5);;
580
gap> N:=First(NormalSubgroups(G),n->Size(n)=19);
581
gap> auts:=SuitableAutomorphismsForReduction(Gdata,N);
582
[ <permutation group of size 18 with 3 generators> ]
583
gap> g:=One(G);;while g in N do
584
> g:=Random(G);
585
> od;
586
gap> coset:=GroupList2PermList(Set(RightCoset(N,g)),Gdata);
587
[ 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56 ]
588
gap> Size(StartsetsInCoset([],coset,[],4,auts,sigdat,Gdata,1));
589
#I Size 19
590
#I 1/ 0 @ 0:00:00.003
591
#I Size 26
592
#I 1/ 0 @ 0:00:00.001
593
#I -->10 @ 0:00:00.004
594
#I Size 88
595
#I 1/ 0 @ 0:00:00.003
596
#I -->45 @ 0:00:00.018
597
#I Size 125
598
#I 1/ 0 @ 0:00:00.006
599
#I -->64 @ 0:00:00.031
600
64
601
gap> Size(StartsetsInCoset([],coset,[],4,[Group(())],sigdat,Gdata,1));
602
#I Size 19
603
#I 1/ 0 @ 0:00:00.000
604
#I Size 136
605
#I 1/ 0 @ 0:00:00.004
606
#I -->136 @ 0:00:00.024
607
#I Size 648
608
#I 1/ 0 @ 0:00:00.021
609
#I -->648 @ 0:00:00.310
610
#I Size 1140
611
#I 1/ 0 @ 0:00:00.036
612
#I -->1140 @ 0:00:00.980
613
1140
614
\endexample
615
616