GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
\Chapter{An Example Program}12Here is a similar example to that in chapter "RDS:A basic example". But3now we do a little more handwork to see how things work. Now we will4calculate the relative difference sets of ``Dembowski-Piper type d''5and order $16$. These difference sets represent projective planes6which admit a quasiregular collineation group such that the fixed7structure is an anti-flag. See \cite{DembowskiPiper}, \cite{Dembowski}8or \cite{RoederDiss} for details.910To have a little more output, you may want to increase "InfoRDS":11\begintt12gap> SetInfoLevel(InfoRDS,3);13\endtt1415First, define some parameters and calculate the data needed:16\beginexample17gap> k:=16;;lambda:=1;;groupOrder:=255;; #Diffset parameters18gap> forbiddenGroupOrder:=15;;19gap> maxtest:=10^6;; #Bound for sig testing20gap> G:=CyclicGroup(groupOrder);21<pc group of size 255 with 3 generators>22gap> Gdata:=PermutationRepForDiffsetCalculations(G);;23gap> MakeImmutable(Gdata);;24\endexample2526Now the forbidden group is calculated in a very ineffective way. Then27we calculate admissible signatures. As there are only few normal28subgroups in $G$, we calculate them all. For other groups, one should29choose more wisely.3031\beginexample32gap> N:=First(NormalSubgroups(Gdata.G),i->Size(i)=forbiddenGroupOrder);33Group([ f1*f3^9, f2*f3^10 ])34gap> globalSigData:=[];;35gap> normals:=Filtered(NormalSubgroups(Gdata.G),n->Size(n) in [2..groupOrder-1]);;36gap> sigdat:=SignatureDataForNormalSubgroups(normals,globalSigData,37> N,Gdata,[k,lambda,maxtest,true]);;38\endexample3940The last step gives better results, if a larger <maxtest> is chosen.41But it also takes more time. To find a suitable <maxtest>, the output42of "SignatureDataForNormalSubgroups" can be used, if43`InfoLevel(InfoRDS)' is at least $2$. Note that for recalculating44signatures, you will have to reset <globalSigData> to `[]'. Try experimenting45with <maxtest> to see the effect of signatures for the generation of46startsets.4748Now examine the signatures found. Look if there is a normal subgroup49which has only one admissible signature (of course, you can also use50"NormalSgsHavingAtMostNSigs" here):5152\beginexample53gap> Set(Filtered(sigdat,s->Size(s.sigs)=1 and Size(s.sigs[1])<=5),i->i.sigs);54[ [ [ 0, 4, 4, 4, 4 ] ], [ [ 4, 4, 8 ] ] ]55\endexample5657Great! we'll take the subgroup of index $3$. The cosets modulo this58group will be used to generate startsets and we assume that the59trivial coset contains $8$ elements of the difference set.60So we generate startsets in $U$ and make a first reduction. For this,61we need $U$ and $N$ as lists of integers (recall that difference sets are62asumed to be lists of integers). We will call these lists $Up$ and63$Np$.64Furthermore, we will have to choose a suitable group of automorphisms65for reduction. As $G$ is cyclic, we may take $Gdata.Aac$ here. A good66choice is the stabilizer of all cosets modulo $U$. Yet sometimes67larger groups may be possible. For example if we want to generate68start sets in $U$ and then do a brute force search. In this case, we69may take the stabilizer of $U$ for reduction.70%notest71\beginexample72gap> U:=First(sigdat,s->s.sigs=[ [ 4, 4, 8 ] ]).subgroup;73Group([ f2, f3 ])74gap> cosets:=RightCosets(G,U);75gap> U1:=cosets[2];;U2:=cosets[3];;76gap> Up:=GroupList2PermList(Set(U),Gdata);;77gap> Np:=GroupList2PermList(Set(N),Gdata);78[ 1, 12, 25, 43, 78, 97, 115, 116, 134, 151, 169, 188, 207, 238, 249 ]79gap> comps:=Difference(Up,Np);;80gap> ssets:=List(comps,i->[i]);;81gap> ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);82#I Size 8083#I 2/ 0 @ 0:00:00.06184[ [ 3 ], [ 4 ] ]85\endexample8687Observe that $1$ is assumed to be element of every difference set and88is not recorded explicitly. So the partial difference sets represented89by $ssets$ at this point are {\tt[ [ 1, 3 ], [ 1, 4 ] ]}. Now the90startsets are extended to size $7$ using elements of $Up$. The runtime91varies depending on the output of "SignatureDataForNormalSubgroups"92and hence on $maxtest$.93%notest94\beginexample95gap> repeat96> ssets:=ExtendedStartsets(ssets,comps,Np,7,Gdata);97> ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;98> until ssets=[] or Size(ssets[1])=7;99#I Size 133100#I 3/ 0 @ 0:00:00.133101#I Size 847102#I 4/ 0 @ 0:00:00.949103#I Size 6309104#I 4/ 0 @ 0:00:07.692105#I Size 21527106#I 5/ 0 @ 0:00:28.337107#I Size 15884108#I 4/ 0 @ 0:00:21.837109#I Size 1216110#I 4/ 0 @ 0:00:01.758111gap> Size(ssets);112192113\endexample114At a higher level of "InfoRDS", the number of start sets which are115discarded because of wrong signatures are also shown.116Now the cosets are changed. Here we use the `NoSort' version of117"ExtendedStartsets". This leads to a lot of start sets in the first118step. If the number of start sets in $U$ is very large, this could be119too much for a reduction. Then the only option is using the brute120force method. But also for the brute force search,121"ExtendedStartSetsNoSort" must be called first (remember that we chos122an enumeration of $G$ and assume the last element from each startset123to be the largeset ``interesting'' one for further completions).124125%notest126\beginexample127gap> comps:=Difference(GroupList2PermList(Set(U1),Gdata),Np);;128gap> ssets:=ExtendedStartsetsNoSort(ssets,comps,Np,11,Gdata);;129gap> ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;130#I Size 8640131#I 9/ 0 @ 0:00:14.159132gap> Size(ssets);1336899134\endexample135%136And as above, we continue:137%138\begintt139repeat140ssets:=ExtendedStartsets(ssets,comps,Np,11,Gdata);141ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;142until ssets=[] or Size(ssets[1])=11;143comps:=Difference(GroupList2PermList(Set(U2),Gdata),Np);144RaiseStartSetLevelNoSort(ssets,comps,Np,15,Gdata);145repeat146ssets:=ExtendedStartsets(ssets,comps,Np,15,Gdata);147ssets:=ReducedStartsets(ssets,[Gdata.Aac],sigdat,Gdata.diffTable);;148until ssets=[] or Size(ssets[1])=15;149\endtt150151%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%152%%153%E154155156157