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
\Chapter{An Example Program}
2
3
Here is a similar example to that in chapter "RDS:A basic example". But
4
now we do a little more handwork to see how things work. Now we will
5
calculate the relative difference sets of ``Dembowski-Piper type d''
6
and order $16$. These difference sets represent projective planes
7
which admit a quasiregular collineation group such that the fixed
8
structure is an anti-flag. See \cite{DembowskiPiper}, \cite{Dembowski}
9
or \cite{RoederDiss} for details.
10
11
To have a little more output, you may want to increase "InfoRDS":
12
\begintt
13
gap> SetInfoLevel(InfoRDS,3);
14
\endtt
15
16
First, define some parameters and calculate the data needed:
17
\beginexample
18
gap> k:=16;;lambda:=1;;groupOrder:=255;; #Diffset parameters
19
gap> forbiddenGroupOrder:=15;;
20
gap> maxtest:=10^6;; #Bound for sig testing
21
gap> G:=CyclicGroup(groupOrder);
22
<pc group of size 255 with 3 generators>
23
gap> Gdata:=PermutationRepForDiffsetCalculations(G);;
24
gap> MakeImmutable(Gdata);;
25
\endexample
26
27
Now the forbidden group is calculated in a very ineffective way. Then
28
we calculate admissible signatures. As there are only few normal
29
subgroups in $G$, we calculate them all. For other groups, one should
30
choose more wisely.
31
32
\beginexample
33
gap> N:=First(NormalSubgroups(Gdata.G),i->Size(i)=forbiddenGroupOrder);
34
Group([ f1*f3^9, f2*f3^10 ])
35
gap> globalSigData:=[];;
36
gap> normals:=Filtered(NormalSubgroups(Gdata.G),n->Size(n) in [2..groupOrder-1]);;
37
gap> sigdat:=SignatureDataForNormalSubgroups(normals,globalSigData,
38
> N,Gdata,[k,lambda,maxtest,true]);;
39
\endexample
40
41
The last step gives better results, if a larger <maxtest> is chosen.
42
But it also takes more time. To find a suitable <maxtest>, the output
43
of "SignatureDataForNormalSubgroups" can be used, if
44
`InfoLevel(InfoRDS)' is at least $2$. Note that for recalculating
45
signatures, you will have to reset <globalSigData> to `[]'. Try experimenting
46
with <maxtest> to see the effect of signatures for the generation of
47
startsets.
48
49
Now examine the signatures found. Look if there is a normal subgroup
50
which has only one admissible signature (of course, you can also use
51
"NormalSgsHavingAtMostNSigs" here):
52
53
\beginexample
54
gap> Set(Filtered(sigdat,s->Size(s.sigs)=1 and Size(s.sigs[1])<=5),i->i.sigs);
55
[ [ [ 0, 4, 4, 4, 4 ] ], [ [ 4, 4, 8 ] ] ]
56
\endexample
57
58
Great! we'll take the subgroup of index $3$. The cosets modulo this
59
group will be used to generate startsets and we assume that the
60
trivial coset contains $8$ elements of the difference set.
61
So we generate startsets in $U$ and make a first reduction. For this,
62
we need $U$ and $N$ as lists of integers (recall that difference sets are
63
asumed to be lists of integers). We will call these lists $Up$ and
64
$Np$.
65
Furthermore, we will have to choose a suitable group of automorphisms
66
for reduction. As $G$ is cyclic, we may take $Gdata.Aac$ here. A good
67
choice is the stabilizer of all cosets modulo $U$. Yet sometimes
68
larger groups may be possible. For example if we want to generate
69
start sets in $U$ and then do a brute force search. In this case, we
70
may take the stabilizer of $U$ for reduction.
71
%notest
72
\beginexample
73
gap> U:=First(sigdat,s->s.sigs=[ [ 4, 4, 8 ] ]).subgroup;
74
Group([ f2, f3 ])
75
gap> cosets:=RightCosets(G,U);
76
gap> U1:=cosets[2];;U2:=cosets[3];;
77
gap> Up:=GroupList2PermList(Set(U),Gdata);;
78
gap> Np:=GroupList2PermList(Set(N),Gdata);
79
[ 1, 12, 25, 43, 78, 97, 115, 116, 134, 151, 169, 188, 207, 238, 249 ]
80
gap> comps:=Difference(Up,Np);;
81
gap> ssets:=List(comps,i->[i]);;
82
gap> ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);
83
#I Size 80
84
#I 2/ 0 @ 0:00:00.061
85
[ [ 3 ], [ 4 ] ]
86
\endexample
87
88
Observe that $1$ is assumed to be element of every difference set and
89
is not recorded explicitly. So the partial difference sets represented
90
by $ssets$ at this point are {\tt[ [ 1, 3 ], [ 1, 4 ] ]}. Now the
91
startsets are extended to size $7$ using elements of $Up$. The runtime
92
varies depending on the output of "SignatureDataForNormalSubgroups"
93
and hence on $maxtest$.
94
%notest
95
\beginexample
96
gap> repeat
97
> ssets:=ExtendedStartsets(ssets,comps,Np,7,Gdata);
98
> ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;
99
> until ssets=[] or Size(ssets[1])=7;
100
#I Size 133
101
#I 3/ 0 @ 0:00:00.133
102
#I Size 847
103
#I 4/ 0 @ 0:00:00.949
104
#I Size 6309
105
#I 4/ 0 @ 0:00:07.692
106
#I Size 21527
107
#I 5/ 0 @ 0:00:28.337
108
#I Size 15884
109
#I 4/ 0 @ 0:00:21.837
110
#I Size 1216
111
#I 4/ 0 @ 0:00:01.758
112
gap> Size(ssets);
113
192
114
\endexample
115
At a higher level of "InfoRDS", the number of start sets which are
116
discarded because of wrong signatures are also shown.
117
Now the cosets are changed. Here we use the `NoSort' version of
118
"ExtendedStartsets". This leads to a lot of start sets in the first
119
step. If the number of start sets in $U$ is very large, this could be
120
too much for a reduction. Then the only option is using the brute
121
force method. But also for the brute force search,
122
"ExtendedStartSetsNoSort" must be called first (remember that we chos
123
an enumeration of $G$ and assume the last element from each startset
124
to be the largeset ``interesting'' one for further completions).
125
126
%notest
127
\beginexample
128
gap> comps:=Difference(GroupList2PermList(Set(U1),Gdata),Np);;
129
gap> ssets:=ExtendedStartsetsNoSort(ssets,comps,Np,11,Gdata);;
130
gap> ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;
131
#I Size 8640
132
#I 9/ 0 @ 0:00:14.159
133
gap> Size(ssets);
134
6899
135
\endexample
136
%
137
And as above, we continue:
138
%
139
\begintt
140
repeat
141
ssets:=ExtendedStartsets(ssets,comps,Np,11,Gdata);
142
ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;
143
until ssets=[] or Size(ssets[1])=11;
144
comps:=Difference(GroupList2PermList(Set(U2),Gdata),Np);
145
RaiseStartSetLevelNoSort(ssets,comps,Np,15,Gdata);
146
repeat
147
ssets:=ExtendedStartsets(ssets,comps,Np,15,Gdata);
148
ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;
149
until ssets=[] or Size(ssets[1])=15;
150
\endtt
151
152
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
153
%%
154
%E
155
156
157