# This file contains GAP code related to the second construction of blocking sets # with respect to the outer tangents. It verifies which of the 13 permutations # defined in the proof of Proposition 3.6 satisfies the required conditions. # We define the set S of squares and the set N of nonsquares of GF(11). q:=11; S:=[]; for i in GF(q) do S:=Union(S,[i^2]); od; N:=Difference(List(GF(q)),S); # We define the 13 permutations mentioned in the proof of Proposition 3.6. sigma1:=function(x) if x = 1 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 9 * One(GF(q)); fi; end; sigma2:=function(x) if x = 1 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 9 * One(GF(q)); fi; end; sigma3:=function(x) if x = 1 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 5 * One(GF(q)); fi; end; sigma4:=function(x) if x = 1 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 9 * One(GF(q)); fi; end; sigma5:=function(x) if x = 1 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 9 * One(GF(q)); fi; end; sigma6:=function(x) if x = 1 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 5 * One(GF(q)); fi; end; sigma7:=function(x) if x = 1 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 5 * One(GF(q)); fi; end; sigma8:=function(x) if x = 1 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 1 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 5 * One(GF(q)); fi; end; sigma9:=function(x) if x = 1 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 1 * One(GF(q)); fi; end; sigma10:=function(x) if x = 1 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 1 * One(GF(q)); fi; end; sigma11:=function(x) if x = 1 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 1 * One(GF(q)); fi; end; sigma12:=function(x) if x = 1 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 1 * One(GF(q)); fi; end; sigma13:=function(x) if x = 1 * One(GF(q)) then return 10 * One(GF(q)); fi; if x = 2 * One(GF(q)) then return 9 * One(GF(q)); fi; if x = 3 * One(GF(q)) then return 7 * One(GF(q)); fi; if x = 4 * One(GF(q)) then return 8 * One(GF(q)); fi; if x = 5 * One(GF(q)) then return 6 * One(GF(q)); fi; if x = 6 * One(GF(q)) then return 5 * One(GF(q)); fi; if x = 7 * One(GF(q)) then return 3 * One(GF(q)); fi; if x = 8 * One(GF(q)) then return 4 * One(GF(q)); fi; if x = 9 * One(GF(q)) then return 2 * One(GF(q)); fi; if x = 10 * One(GF(q)) then return 1 * One(GF(q)); fi; end; # If sigma is one of the 13 above-mentioned permutations, we can verify # with the following function whether the conditions (P3) and (P4) are # satisfied. Verification:=function(sigma) local set1,Status,x,y; set1:=Difference(List(GF(q)),[Zero(GF(q))]); Status:=true; for x in set1 do if (x-sigma(x))*x in S then Status:=false; fi; for y in Difference(set1,[x,sigma(x)]) do if (sigma(x)-x)*(sigma(y)-y)*(y-x)*(sigma(y)-sigma(x)) in S then Status:=false; fi; od; od; return Status; end; # Only sigma3 and sigma5 turn out to satisfy the conditions (P3) and (P4).