# With the following commands, we compute some structural information of the # T_1-blocking sets we obtained in earlier computations. # Select a prime power: q:=11; # With similar commands as before, we construct a computer model of a # hyperbolic quadric Q^+(3,q) inside PG(3,q) (see generalA.g). We also determine # the external lines, secant lines, inner tangents and outer tangents. The # automorphism group of PG(3,q) stabilising Q^+(3,q) is again denoted by G. if q=2 then N:=4; fi; if q=3 then N:=6; fi; if q=4 then N:=4; fi; if q=5 then N:=7; fi; if q=7 then N:=6; fi; if q=8 then N:=4; fi; if q=9 then N:=19; fi; if q=11 then N:=6; fi; if q=13 then N:=9; fi; v:=q^3+q^2+q+1; g:=AllPrimitiveGroups(DegreeOperation,v)[N]; h:=Stabilizer(g,[1,2],OnSets); Orbs:=Orbits(h,[1..v]); Orbs2:=Filtered(Orbs,x->Size(x) in [2,q-1]); line:=Union(Orbs2); lines:=Orbit(g,line,OnSets); line1:=line; help:=Filtered(lines,x->Intersection(x,line)=[]); line2:=help[1]; help:=Filtered(lines,x->Intersection(x,Union(line1,line2))=[]); line3:=help[1]; help:=Filtered(lines,x->Intersection(x,line1)<>[] and Intersection(x,line2)<>[] and Intersection(x,line3)<>[]); hyp:=Union(help); External:=Filtered(lines,x->Size(Intersection(x,hyp))=0); Secant:=Filtered(lines,x->Size(Intersection(x,hyp))=2); Outer:=Filtered(lines,x->Size(Intersection(x,hyp))=1); Inner:=Filtered(lines,x->Size(Intersection(x,hyp))=q+1); G:=Stabilizer(g,hyp,OnSets); # For odd prime powers q <= 13, we list the (complete) set ovs2 of nonisomorphic # T_1-blocking sets that was obtained in GeneralC.g. if q=3 then ovs2:=[ [ 8, 9, 14, 20, 24, 26, 37, 38 ] ]; fi; if q=5 then ovs2:=[ [ 6, 10, 11, 14, 26, 61, 67, 69, 72, 76, 77, 91, 95, 96, 102, 106, 109, 111, 112, 113, 116, 132, 138, 140 ], [ 5, 6, 7, 11, 14, 31, 55, 56, 69, 72, 77, 78, 91, 102, 103, 106, 109, 111, 113, 116, 119, 138, 140, 155 ], [ 6, 8, 14, 16, 21, 41, 53, 55, 56, 64, 69, 71, 77, 78, 91, 97, 102, 106, 109, 111, 113, 123, 138, 140 ] ]; fi; if q=7 then ovs2:=[ [ 10, 13, 23, 29, 41, 44, 50, 58, 61, 66, 67, 71, 76, 77, 83, 88, 89, 102, 104, 114, 123, 131, 137, 169, 171, 174, 209, 223, 230, 240, 243, 255, 275, 280, 288, 289, 303, 311, 318, 328, 334, 335, 337, 354, 384, 389, 393, 395 ], [ 10, 13, 23, 29, 41, 50, 58, 65, 67, 71, 74, 76, 77, 83, 88, 89, 107, 110, 114, 120, 142, 169, 181, 206, 209, 226, 240, 245, 249, 251, 253, 255, 275, 280, 286, 289, 303, 311, 318, 334, 335, 337, 352, 354, 363, 389, 393, 395 ], [ 10, 13, 23, 24, 25, 31, 36, 41, 50, 55, 58, 66, 67, 71, 76, 77, 83, 88, 89, 102, 109, 169, 182, 199, 203, 209, 211, 240, 248, 262, 280, 288, 289, 301, 303, 307, 311, 318, 334, 335, 337, 354, 367, 384, 389, 393, 395, 397 ], [ 10, 13, 23, 24, 41, 50, 58, 67, 76, 79, 83, 88, 89, 143, 155, 156, 158, 169, 175, 187, 195, 203, 209, 220, 240, 248, 259, 260, 268, 280, 289, 303, 311, 318, 331, 332, 334, 337, 344, 354, 364, 367, 371, 376, 377, 378, 389, 395 ] ]; fi; if q=9 then ovs2:=[]; fi; if q=11 then ovs2:=[ [ 5, 19, 66, 67, 78, 79, 98, 111, 119, 127, 128, 129, 132, 154, 158, 191, 194, 215, 217, 219, 222, 236, 251, 278, 303, 305, 325, 334, 348, 355, 363, 372, 377, 387, 466, 468, 505, 549, 570, 574, 580, 581, 618, 627, 628, 634, 639, 645, 658, 662, 665, 673, 677, 694, 704, 720, 728, 759, 768, 782, 826, 829, 856, 867, 868, 885, 901, 919, 923, 939, 941, 942, 950, 953, 957, 975, 990, 999, 1000, 1008, 1012, 1023, 1043, 1048, 1058, 1074, 1077, 1079, 1109, 1123, 1135, 1147, 1163, 1188, 1190, 1204, 1213, 1215, 1220, 1224, 1226, 1240, 1272, 1276, 1278, 1282, 1295, 1302, 1303, 1323, 1337, 1352, 1356, 1362, 1373, 1389, 1420, 1449, 1450, 1451 ], [ 5, 53, 77, 79, 98, 100, 111, 119, 129, 132, 155, 158, 194, 199, 210, 215, 217, 222, 249, 250, 251, 258, 279, 282, 288, 313, 317, 318, 327, 334, 355, 363, 364, 372, 375, 377, 385, 387, 389, 397, 434, 463, 466, 497, 505, 534, 549, 555, 572, 573, 574, 581, 589, 613, 618, 623, 634, 665, 694, 701, 704, 720, 728, 735, 754, 755, 781, 811, 826, 855, 867, 868, 876, 885, 902, 953, 965, 975, 987, 990, 997, 1000, 1008, 1023, 1031, 1046, 1048, 1058, 1077, 1079, 1109, 1123, 1124, 1140, 1147, 1165, 1190, 1204, 1213, 1215, 1220, 1226, 1240, 1253, 1272, 1276, 1282, 1298, 1302, 1309, 1337, 1352, 1362, 1373, 1389, 1420, 1428, 1430, 1436, 1449 ], [ 5, 19, 24, 31, 55, 79, 95, 98, 111, 119, 127, 129, 132, 154, 158, 167, 194, 197, 209, 215, 217, 222, 232, 236, 251, 259, 294, 317, 318, 334, 355, 363, 372, 375, 377, 387, 407, 441, 443, 453, 466, 474, 505, 508, 509, 534, 544, 549, 570, 574, 576, 581, 618, 623, 634, 646, 658, 665, 694, 704, 720, 728, 826, 831, 867, 868, 870, 873, 875, 885, 902, 903, 927, 941, 953, 957, 975, 990, 1000, 1008, 1023, 1048, 1054, 1058, 1079, 1081, 1084, 1109, 1123, 1124, 1132, 1147, 1168, 1181, 1183, 1190, 1200, 1204, 1213, 1215, 1220, 1226, 1240, 1272, 1282, 1295, 1298, 1337, 1352, 1357, 1360, 1362, 1373, 1389, 1409, 1418, 1420, 1433, 1436, 1449 ], [ 5, 12, 29, 53, 57, 79, 98, 111, 113, 118, 119, 129, 158, 166, 194, 215, 222, 231, 243, 251, 330, 334, 344, 347, 355, 363, 370, 377, 384, 387, 452, 455, 466, 481, 482, 505, 506, 523, 529, 542, 549, 574, 581, 613, 615, 618, 634, 665, 678, 679, 681, 687, 694, 704, 720, 728, 767, 778, 795, 811, 826, 867, 868, 885, 920, 928, 933, 953, 974, 975, 978, 985, 987, 990, 993, 1000, 1004, 1008, 1014, 1015, 1023, 1048, 1050, 1058, 1072, 1079, 1102, 1104, 1108, 1109, 1123, 1143, 1147, 1190, 1198, 1204, 1213, 1215, 1220, 1225, 1226, 1239, 1240, 1248, 1253, 1272, 1282, 1326, 1337, 1349, 1352, 1362, 1373, 1388, 1389, 1420, 1430, 1447, 1448, 1449 ] ]; fi; if q=13 then ovs2:=[]; fi; # With the following code, we compute the size of the isomorphism class to # which a certain T_1-blocking set belongs (with respect to the automorphism # group of PG(3,q) that stabilizes Q^+(3,q)). OrbitSize:=function(ov) return Index(G,Stabilizer(G,ov,OnSets)); end; # With the following code, we compute the intersection pattern that a given # T_1-blocking set ov has with the outer tangents. IntPatternTangents:=function(ov) local help,i,size; help:=0*[1..q+2]; for i in Outer do size:=Size(Intersection(i,ov)); help[size+1]:=help[size+1]+1; od; return help; end; # With the following code, we compute the intersection pattern that a given # T_1-blocking set ov has with the secant lines. IntPatternSecants:=function(ov) local help,i,size; help:=0*[1..q+2]; for i in Secant do size:=Size(Intersection(i,ov)); help[size+1]:=help[size+1]+1; od; return help; end; # With the following code, we compute the intersection pattern that a given # T_1-blocking set ov has with the external lines. IntPatternExternals:=function(ov) local help,i,size; help:=0*[1..q+2]; for i in External do size:=Size(Intersection(i,ov)); help[size+1]:=help[size+1]+1; od; return help; end; # For every T_1-blocking set ov of size q^2-1 and every point p of ov, # there is associated a T-blocking set of size q^2+q-1. This T-blocking # set can be created with the following command Blocking1. Blocking1:=function(ov,p) local help,oval,x; help:=[]; for x in Outer do if p in x then Append(help,[x]); fi; od; oval:=Intersection(Union(help),hyp); return Union(Difference(ov,[p]),oval); end; # For a given T_1-blocking set ov of size q^2-1, we determine all T-blocking # sets of size q^2+q-1 that arise from it. This can be realized with the # command Blocking2(ov), which generates a list that contains precisely one # copy from each isomorphism class of such T-blocking sets. Blocking2:=function(ov) local ovs3,p,ov2,New,x; ovs3:=[]; for p in ov do ov2:=Blocking1(ov,p); New:=true; for x in ovs3 do if RepresentativeAction(G,ov2,x,OnSets)<>fail then New:=false; break; fi; od; if New then Append(ovs3,[ov2]); fi; od; return ovs3; end; # With the following command, we can verify whether a given set A of points of # PG(3,q) is a T-blocking set. IsTBlockingSet:=function(A) local B,x; B:=List(Union(Outer,Inner),x->Size(Intersection(x,A))); return not(0 in B); end;