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

612113 views
1
% This file was created automatically from jumpstart.msk.
2
% DO NOT EDIT!
3
\Chapter{A basic example}
4
5
This chapter shows a basic example of how to use {\package{RDS}}. Some
6
of the functions used here make choices which might not be optimal but
7
should suffice for most ``everyday'' situations. If you plan to do
8
more involved computations, you should also see the other chapters to
9
learn about the concepts behind these high-level functions.
10
11
Here we will construct relative difference sets of Dembowski-Piper
12
type ``b'' and order $9$ as an example. We will take the elementary
13
abelian group as an example. The general idea is as follows: Find a
14
``nice'' normal subgroup $U$ and generate relative difference sets
15
coset by coset. The normal subgroup has to be chosen such that we know
16
how many elements to choose from each coset modulo $U$.
17
18
The calculations here are very easy, a more demanding example can be found
19
in chapter "RDS:An Example Program".
20
21
%%%%%%%%%%%%%%%%%%%%%%
22
\Section{First Step: Integers instead of group elements}
23
24
Difference sets are represented by lists of integers. Every difference
25
set is assumed to contain $1$. This is assumed implicitly. So the
26
lists representing difference sets *must not* contain 1 (a partial
27
difference set of length $n$ is hence represented by a list of length
28
$n-1$). If a partial difference set contains $1$, many functions will
29
produce errors.
30
31
To find Difference sets in a group, say $G$, begin with generating the
32
group (and forbidden subgroup) and defining the parameters. Like this:
33
34
\beginexample
35
gap> LoadPackage("rds");
36
----------------------------------------------------------------
37
Loading RDS 1.2
38
by Marc Roeder (marc_roeder@web.de)
39
----------------------------------------------------------------
40
true
41
gap> k:=9;;lambda:=1;;groupOrder:=81;;
42
gap> forbiddenGroupOrder:=9;;
43
gap> G:=ElementaryAbelianGroup(groupOrder);
44
<pc group of size 81 with 4 generators>
45
gap> Gdata:=PermutationRepForDiffsetCalculations(G);;
46
gap> N:=Subgroup(G,GeneratorsOfGroup(G){[1,2]});
47
Group([ f1, f2 ])
48
gap> Size(N)=forbiddenGroupOrder; #just a test...
49
true
50
\endexample
51
52
Once we have calculated <Gdata>, this will be used very often to
53
represent the group <G> as it contains much more information.
54
55
%%%%%%%%%%%%%%%%%%%%%%
56
\Section{Signatures: An important tool}
57
58
The ``signature'' of a subset $S\subseteq G$ of a group relative to a
59
normal subgroup $U$ is the multiset of numbers of elements $S$
60
contains from each coset modulo $U$. Possible values of these numbers
61
can be calculated a priori for relative difference sets.
62
63
\beginexample
64
gap> sigdat:=SignatureData(Gdata,N,k,lambda,10^5);;
65
\endexample
66
67
The argument $10^5$ depends on your degree of impatience. Larger
68
numbers take more time in this step, but give better results for later
69
reduction steps.
70
71
Now we will look for a ``nice'' normal subgroup. A normal subgroup is
72
``nice'', if it has only few signatures and the number of different
73
entries in each signature is low. If you have different choices here
74
do some experiments, to see what works. Let's see what we have:
75
76
\beginexample
77
gap> NormalSgsHavingAtMostNSigs(sigdat,1,[1..7]);
78
[ rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f3 ]) ),
79
rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f4 ]) ),
80
rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f3*f4 ]) ),
81
rec( sigs := [ [ 3, 3, 3 ] ], subgroup := Group([ f1, f2, f3*f4^2 ]) ) ]
82
\endexample
83
84
The second parameter of "NormalSgsHavingAtMostNSigs" is the maximal
85
number of signatures the subgroup may have. The third parameter gives
86
the desired lengths of the signatures (the index of the normal
87
subgroup).
88
89
So in this example we have no real choice. Let's take the first group
90
for $U$. The signature means that we have to get $3$ elements from
91
each coset modulo $U$. So we generate startsets of length $2$ in the
92
trivial coset $U$ (representing partial relative difference sets of
93
length $3$).
94
This could be done using "AllDiffsets", of course. But here we will
95
use another method. The function "StartsetsInCoset" generates
96
startsets in $U$ by generating an initial set of startsets and then
97
raising the length of each startset by $1$. Then a reduction using
98
signatures and automorphism is performed. This is done until all
99
startsets have the desired length or no startset remains (in which
100
case there is no relative difference set). For the reduction, a
101
suitable set of automorphisms must be chosen. This is done by the
102
function "SuitableAutomorphismsForReduction":
103
104
\beginexample
105
gap> U:=last[1].subgroup;
106
Group([ f1, f2, f3 ])
107
gap> auts:=SuitableAutomorphismsForReduction(Gdata,U);
108
[ <permutation group of size 303264 with 8 generators> ]
109
gap> startsets:=StartsetsInCoset([],U,N,2,auts,sigdat,Gdata,lambda);
110
#I Size 18
111
#I 1/ 0 @ 0:00:00.071
112
#I Size 8
113
#I 1/ 0 @ 0:00:00.038
114
#I -->1 @ 0:00:00.042
115
[ [ 4, 22 ] ]
116
\endexample
117
118
For larger examples, this takes a wile. Taking $10^6$ (or even more)
119
for the generation of <sigdat> can save some time here. A few remarks
120
about the parameters of "StartsetsInCoset". The first parameter `[]'
121
is the set of startsets which we start with (as we just started, this
122
is empty). The second parameter is the coset we use to generate
123
startsets and third parameter is the forbidden subgroup. The fourth
124
parameter is the length of the startsets we want to generate (remember
125
that $1$ is assumed to be in every startset without being listed. So
126
we want startsets of size $3$ represented by lists of length $2$.
127
Hence the $2$ in this place). Instead of <auts> a suitable list of
128
groups of automorphisms of $G$ in permutation representation may be
129
inserted. These are used for the reduction of startsets. For large
130
groups <auts[1]> it is a good idea to add some subgroups of <auts[1]>
131
to the list (ascending in order) <auts>, as the reduction is done
132
using the first group in the list and then reducing the already
133
reduced list again using the next group.
134
135
%%%%%%%%%%%%%%%%%%%%%%
136
\Section{Change of coset vs. brute force}
137
138
Now we have startsets of length $2$ in $U$ and there are two
139
possibilities:
140
141
{\bf (1)} Find $3$ more elements from another coset like this:
142
\beginexample
143
gap> cosets:=RightCosets(G,U);
144
[ RightCoset(Group( [ f1, f2, f3 ] ),<identity> of ...),
145
RightCoset(Group( [ f1, f2, f3 ] ),f4),
146
RightCoset(Group( [ f1, f2, f3 ] ),f4^2) ]
147
gap> startsets:=StartsetsInCoset(startsets,cosets[2],N,5,auts,sigdat,Gdata,lambda);
148
#I Size 27
149
#I 1/ 0 @ 0:00:00.127
150
#I Size 11
151
#I 1/ 0 @ 0:00:00.058
152
#I -->1 @ 0:00:03.311
153
#I Size 2
154
#I 2/ 2 @ 0:00:00.015
155
#I -->2 @ 0:00:00.015
156
[ [ 4, 22, 5, 28, 73 ], [ 4, 22, 5, 28, 77 ] ]
157
\endexample
158
And $3$ more from the last one (of course, we could also change to
159
force, but it seems to work this way\dots).
160
\beginexample
161
gap> startsets:=StartsetsInCoset(startsets,cosets[3],N,8,auts,sigdat,Gdata,lambda);
162
#I Size 9
163
#I 1/ 0 @ 0:00:00.056
164
#I Size 1
165
#I 1/ 1 @ 0:00:00.006
166
#I -->1 @ 0:00:00.009
167
#I Size 1
168
#I 1/ 1 @ 0:00:00.006
169
#I -->1 @ 0:00:00.006
170
[ [ 4, 22, 5, 28, 73, 37, 66, 78 ] ]
171
\endexample
172
173
So we found one difference set of order $9$ in the elementary abelian
174
group of order $81$. To get the difference set containing $1$
175
explicitly and as a subset of $G$, say
176
\beginexample
177
gap> PermList2GroupList(Concatenation(startsets[1],[1]),Gdata);
178
[ f3, f1*f3^2, f4, f2*f3*f4, f1*f2^2*f3^2*f4, f1^2*f4^2, f2*f3^2*f4^2,
179
f1^2*f2^2*f3*f4^2, <identity> of ... ]
180
\endexample
181
182
{\bf (2)} Do a brute force search. Here we have to convert
183
the forbidden group $N$ into a list of integers $Np$. And we have to
184
raise the length of the startsets by one before we can start. This is
185
due to the ordering we chose (which is not necessarily compatible with
186
the cosets modulo $U$).
187
188
\beginexample
189
gap> Np:=GroupList2PermList(Set(N),Gdata);
190
[ 1, 2, 3, 6, 7, 10, 16, 19, 32 ]
191
gap> startsets:=ExtendedStartsetsNoSort(startsets,[1..groupOrder],Np,8,Gdata,lambda);;
192
gap> Size(startsets);
193
54
194
gap> foundsets:=[];;
195
gap> for set in startsets
196
> do
197
> Append(foundsets,AllDiffsets(set,[1..groupOrder],k-1,Np,Gdata,lambda));
198
> od;
199
gap> Size(foundsets);
200
162
201
\endexample
202
203
Now <foundsets> contains $162$ relative $(9,9,9,1)$-difference sets
204
(represented by lists of length $8$). These are all equivalent (as seen above). Equivalence can be tested like this:
205
206
\beginexample
207
gap> ReducedStartsets(foundsets,[Gdata.Aac],i->true,Gdata);
208
#I Size 162
209
#I 1/ 0 @ 0:00:00.001
210
[ [ 4, 22, 36, 39, 49, 50, 60, 61 ] ]
211
\endexample
212
213
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
214
%%
215
%E END
216
%%
217
218