Many researchers in algebraic combinatorics or an adjacent field at some point want to get their hands on a list of feasible parameters of strongly regular graphs, and on actual examples of graphs. These graphs are studied and/or used in hundreds of articles; recent highlights in using strongly regular graphs include Bondarenko’s [2] and an improvement of the latter by Jenrich and Brouwer [38]. While parameters are available from Brouwer’s online database [4], actually constructing an example can easily take a lot of time and effort. The project described here aims at making these tasks almost trivial by providing the necessary graph constructions, and a way to obtain a strongly regular graph from a tuple of parameters, in the computer algebra system Sagemath [54] (also known as Sage). It is worth mentioning that a large part of the project makes use of GAP [53] and its packages, in particular Soicher’s package GRAPE [50].

Exhaustive enumeration of the non-isomorphic strongly regular graphs has been performed for some tuples \(\mathcal {T}\) of parameters (see Spence [51]). However, the sheer number of non-isomorphic examples (see e.g. Fon-Der-Flaass [20] or Muzychuk [44]) makes it hard to expect to be able to generate all of them, for a given \(\mathcal {T}\), in reasonable time. Thus we opted for a minimalist approach: for each \(\mathcal {T}\) we generate an example, provided that one is known. We note, however, that some of constructions implemented can generate many examples with the same \(\mathcal {T}\); e.g. we have implemented the construction to generate the point graph of the generalized quadrangle \(T_{2}^{*}(\mathcal {O})\) (see [47]) from any hyperoval \(\mathcal {O}\subset PG(2,2^k)\). As well, many \(\mathcal {T}\)’s can be realized by more than one implemented construction, sometimes leading to isomorphic graphs, and sometimes not.

Our desire to take on this project was motivated by the following considerations.

  • One wants to double-check that the constructions are correct and their descriptions are complete; indeed, a program is more trustworthy than a proof in some situations, and coding a construction is a good test for completeness of the description provided.

  • We wanted to see that the Sage combinatorial, graph-theoretic, and group-theoretic primitives to deal with such constructions are mature and versatile, so that coding of constructions is relatively easy and quick.

  • One learns a lot while working on such a project, both the underlying mathematics, and how the toolset can be improved. In particular, one might come along simplifications of constructions, and this actually happened on couple of occasions, see Sect. 5.3.

  • As time goes by, possible gaps in constructions are harder and harder to fill in. Reconstructing omitted proof details becomes a tricky and time-consuming task.

In particular, as far as the latter item is concerned, we seem to have uncovered at least one substantial gap in constructions (see Sect. 7). Furthermore, a number of constructions needed feedback from their authors or discussions with experts—sometimes quite substantial—to code them.

A large part of the constructions use in a nontrivial way another combinatorial or algebraic object: block design, Hadamard matrix, two-graph, two-distance code, finite group, etc. In particular, at the start of the project some of these were lacking in Sagemath, we needed to implement constructions of certain block designs, regular symmetric Hadamard matrices with constant diagonal (where the gap just mentioned was uncovered), skew-Hadamard matrices, and two-graphs. As well, we created a small database of two-distance codes (see Sect. 4.2).

The remainder of the paper consists of a short introduction to strongly regular graphs, pointing out particular relevant Sagemath features, and a description of our implementations, few of them seemingly novel. We list the constructions that we implemented, and discuss few gaps we discovered in the literature.

Strongly regular graphs and related objects

An undirected regular degree k graph \(\Gamma \) on n vertices (with \(0<k<n-1\)) is called strongly regular if the vertices u and v of any edge have \(\lambda \) common neighbours, and the vertices u and v of any non-edge have \(\mu \) common neighbours. One says that \(\Gamma \) has parameters \((n,k,\lambda ,\mu )\). Note that the complement of \(\Gamma \), i.e. the graph with the same set of vertices and edges being precisely the non-edges of \(\Gamma \), is also a strongly regular whose parameters are related by a simple formula to these of \(\Gamma \) (see e.g. Brouwer and Haemers [7] for details).

Example 2.1

Let \(\Gamma \) be the graph with vertices being k-subsets of an m-set, with \(k\le \lfloor m/2\rfloor \); two vertices are adjacent if the corresponding k-subsets intersect in a \((k-1)\)-subset. Such graphs are called Johnson graphs and denoted by J(mk) (in Sagemath, J(mk) can be constructed by calling the function graphs.JohnsonGraph(m,k)). Then J(m, 2) is a strongly regular graph, with parameters \(\left( \left( {\begin{array}{c}m\\ 2\end{array}}\right) ,2(m-2),m-2,4\right) \).

Example 2.2

RSHCD – a \((n,\epsilon )\)-Regular Symmetric Hadamard matrix M with Constant Diagonal is an \(n\times n\) symmetric \(\pm 1\)-matrix such that: (1) \(MM^T=nI\); (2) its rows sums are all equal to \(\delta \epsilon \sqrt{n}\), where \(\epsilon \in \{-1,+1\}\) and \(\delta \) is the (constant) diagonal value of M, usually denoted \(\mathrm {RSHCD}^{-}\) and \(\mathrm {RSHCD}^{+}\). These matrices yield regular two-graphs. As well, they yield strongly regular graphs: replacing all the entries equal to the diagonal values by 0, and the remaining entries by 1 gives the adjacency matrix of a strongly regular graph.

Some sources further require that both \(\Gamma \) and its complement are connected; in terms of parameters this means \(0<\mu <k\). This excludes the trivial case of \(\Gamma \) (or its complement) being disjoint union of complete graphs of the same size. Sagemath implementation does not impose this restriction.

A considerable number of techniques ruling out the existence of a strongly regular graph \(\Gamma \) with given parameters \((n,k,\lambda ,\mu )\) are known, e.g. based on computing eigenvalues of the adjacency matrix A of \(\Gamma \). As A generates a dimension 3 commutative subalgebra of \(\mathbb {C}^{n\times n}\), one sees that there are just 3 distinct eigenvalues of A, and they are determined by the parameters (e.g. the largest eigenvalue is k). Sagemath implements parameter-based techniques to rule out sets of parameters from Brouwer and van Lint [9], and from Brouwer et al. [10].

We use standard terminology for finite permutation groups, finite simple groups, and geometries over finite fields from [7, 10].

Structure and use of the implementation

The strongly regular graphs are split into two categories: the fixed-size graphs (see Sect. 4) and the families of strongly regular graphs (see Sect. 5). The parameters \((n,k,\lambda ,\mu )\) of fixed-size graphs are hardcoded, while each family of strongly regular graphs has a helper function which takes \((n,k,\lambda ,\mu )\) as an INPUT and answers whether the graph family is able to produce a graph with the required parameters. Some families forward their queries to the databases of Balanced Incomplete Block Designs, of Orthogonal Arrays, of Hadamard matrices of various types, and of 2-weight codes.

With this design, it takes \(\le \)3 s on a modern laptop to know which graphs on <1300 vertices can be produced by the implemented constructions (i.e. as far as the online database goes).

In Sage, everything is made available to the user through a single function graphs.strongly_regular_graph that produces a graph matching the provided parameters. Note that \(\mu \), the fourth parameter, can be omitted.

figure a

One can use the same function to learn whether a set of parameters is realizable, if it is not, or if the existence problem is unsettled:

figure b

Technical details and descriptions of many specific functions is available as a part [13] of the Sagemath manual, which can be found online [54].

Fixed-size constructions

“Sporadic” examples

Here we did not attempt to give an exhaustive list of references for each graph, for some of them have several papers devoted to them in one or another way.

We identify the corresponding graphs by their parameters, and provide references and some construction details for each of them.

figure c

Hubaut [31, S. 9]. Subgraph of common neighbours of a triangle in Suzuki graph.

figure d

[7, Sect. 9.1.7 (iv)]. The Hoffman–Singleton graph.

figure e

[7, Sect. 9.1.7 (v)]. The Sims–Gewirtz graph.

figure f

[7, Sect. 9.1.7 (vi)]. The \(M_{22}\)-graph.

figure g

[7, Sect. 9.1.7 (vii)]. The Higman–Sims graph.

figure h

Jørgensen and Klin [39]. Built as a Cayley graph.

figure i

[39]. Built as a Cayley graph.

figure j

Goethals and Seidel [23], Coolsaet [15].

figure k

Mathon, cf. [9, Sect. 6.A]. The distance-2 graph of J(10, 3).

figure l

Unique by Degraer and Coolsaet [17]. We first build a \(2-(21,7,12)\) design, by removing two points from the Witt design on 23 points. We then build the intersection graph of blocks with intersection size 3.

figure m

Mathon, cf. [9, Sect. 6.A]. The distance-(1 or 4) graph of J(9, 4).

figure n

Goethals, cf. [9].

figure o

Ivanov et al. [35, Table 9]. An orbital of degree 39 (among 2 such orbitals) of the group \(PSL_{3}(3)\) acting on the (right) cosets of a subgroup of order 39.

figure p

[31, S. 12]. The complement of the subgraph induced on the neighbours of a vertex in the complement of McLaughlin graph.

figure q

[9, Sect. 10.B (iv)]. Obtained from the line graph \(\Lambda \) of Hoffman-Singleton Graph, by setting two vertices to be adjacent if their distance in \(\Lambda \) is exactly 2. For more information, see

figure r

Brouwer [5]. Built from the symmetric Higman–Sims design. There exists an involution \(\sigma \) exchanging the points and blocks of the Higman–Sims design, such that each point is mapped onto a block that contains it (i.e. \(\sigma \) is a polarity with all absolute points). The graph is then built by making two vertices uv adjacent whenever \(v\in \sigma (u)\).

figure s

W. Haemers, cf. [9, Sect. 10.B.(vi)]. Obtained from the \((175,72,20,36)\)-graph by attaching a isolated vertex and doing Seidel switching (cf. [7, Sect. 10.6.1]) with respect to the disjoint union of 18 maximum cliques.

figure t

[31, S. 7]; (a rank 3 representation of \(M_{22}\)). We first build a \(2-(22,7,16)\) design, by removing one point from the Witt design on 23 points. We then build the intersection graph of blocks with intersection size 3.

figure u

Ionin and Shrikhande [34].

figure v

Klin et al. [40]. \(S_{7}\) acts on the 210 digraphs isomorphic to the disjoint union of \(K_{1}\) and the circulant 6-vertex digraph which one can obtain using Sagemath as digraphs.Circulant(6,[1,4]). This action has 16 orbitals; the package [19] found a merging of them, explicitly described in [40], resulting in this graph.

figure w

Brouwer [6]. The Cameron graph.

figure x

Goethals and Seidel [24]. Consider the orthogonal complement of the ternary Golay code, which has 243 words. On them we define a graph, with two words adjacent if their Hamming distance is 9.

figure y

[31, S. 6]; a rank 3 representation of \(M_{23}\). We first build the Witt design on 23 points which is a \(2-(23,7,21)\) design. We then build the intersection graph of blocks with intersection size 3.

figure z

[31, S. 13]. The McLaughlin graph.

figure aa

Haemers and Tonchev [26]. The graph is built from from McLaughlin graph, with an added isolated vertex. We then perform Seidel switching on a set of 28 disjoint 5-cliques.

figure ab

Mathon and Rosa [43]. The vertices of the graph are all 280 partitions of a set of cardinality 9 into 3-sets, e.g. \(\{\{a,b,c\},\{d,e,f\},\{g,h,i\}\}\). The cross-intersection of two partitions \(P=\{P_1,P_{2},P_3\}\) and \(P'=\{P'_1,P'_{2},P'_3\}\) being defined as \(\{P_i \cap P'_j: 1\le i,j\le 3\}\), two vertices of ‘G‘ are set to be adjacent if the cross-intersection of their respective partitions does not contain exactly 7 nonempty sets.

figure ac

[35, Table 9, p. 51]. This graph is built from the rank 4 action of \(J_{2}\) on the cosets of a subgroup 3.PGL(2, 9).

figure ad

See Sect. 5.3.2. \(\mathrm {RSHCD}^{-}\), see Example 2.2. We build an apparently new example using the (324, 153, 72, 72)-graph; other example may be found in [27].

figure ae

See Sect. 5.3.2. \(\mathrm {RSHCD}^{+}\), see Example 2.2. We build the example from [37]; more examples may be found in [27, 45].

figure af

[31, S. 14]; (rank 3 representation of \(G_{2}(4)\)). This graph is isomorphic to the subgraph of the Suzuki graph [31, S. 15] induced on the neighbours of a vertex.

figure ag

[35, Table 9, p. 45]. Obtained as the union of 4 orbitals (among the 13 that exist) of the group Sz(8) in its primitive action on 560 points.

figure ah

Haemers [25], see also [9, Sect. 10.B.(v)]. This graph is the line graph of a pg(5, 18, 2); its point graph is the (175, 72, 20, 36)-srg from this table. One then selects a subset of 630 maximum cliques in the latter to form the set of lines of the pg(5, 18, 2).

figure ai

Ionin and Kharaghani, see Sect. 5.3.3.

figure aj

Mathon, cf. [9, Sect. 6.D]. This and the following two are Mathon’s graphs from merging classes in the product of pseudo-cyclic association scheme for action of \(O_3(8)\) on elliptic lines in \( PG (2,8)\), studied by Hollmann [29].

figure ak

Mathon, cf. [9, Sect. 6.D].

figure al

Mathon, cf. [9, Sect. 6.D].

figure am

Janko and Kharaghani [36].

figure an

Brouwer and van Eijl [8]. This graph is built on the words of weight 12 in the binary Golay code. Two of them are then made adjacent if their symmetric difference has weight 12.

figure ao

[31, S. 15]. Suzuki graph, rank 3 representation of Suz.

figure ap

Janko and Kharaghani [36].

Two-weight codes database

The rest of the fixed-size constructions of strongly regular graphs in the database originate from linear d-dimensional two-weight codes of length \(\ell \) with weights \(w_1\) and \(w_{2}\) over \(\mathbb {F}_q\). We use data shared by Chen [11], data by Kohnert [41] shared by Alfred Wassermann, data from Bouyukliev and Simonis [3, Theorem 4.1], and from Disset [18].

Graph parameters Code parameters Ref.
n k \(\lambda \) \(\mu \) q \(\ell \) d \(w_1\) \(w_{2}\)
81 50 31 30 3 15 4 9 12 [11]
243 220 199 200 3 55 5 36 45 [11]
256 153 92 90 4 34 4 24 28 [11]
256 170 114 110 2 85 8 40 48 [11]
256 187 138 132 2 68 8 32 40 [11]
512 73 12 10 2 219 9 96 112 [11]
512 219 102 84 2 73 9 32 40 [11]
512 315 202 180 2 70 9 32 40 [41]
625 364 213 210 5 65 4 50 55 [11]
625 416 279 272 5 52 4 40 45 [11]
625 468 353 342 5 39 4 30 35 [3]
729 336 153 156 3 168 6 108 117 [18]
729 420 243 240 3 154 6 99 108 [11]
729 448 277 272 3 140 6 90 99 [41]
729 476 313 306 3 126 6 81 90 [11]
729 532 391 380 3 98 6 63 72 [11]
729 560 433 420 3 84 6 54 63 [11]
729 616 523 506 3 56 6 36 45 [11]
1024 363 122 132 4 121 5 88 96 [18]
1024 396 148 156 4 132 5 96 104 [18]
1024 429 176 182 4 143 5 104 112 [18]
1024 825 668 650 2 198 10 96 112 [11]

Note that some of these codes are members of infinite families; this will be explored and extended in forthcoming work.

Infinite families

These are roughly divided into two parts: graphs related to finite geometries over finite fields (in particular various classical geometries), and graphs obtained by combinatorial constructions.

Graphs from finite geometries

Here q denotes a prime power, and \(\epsilon \in \{-,+\}\).

  • Graphs arising from projective geometry designs are discussed in Sect. 5.2, along with other Steiner graphs.

  • Paley graphs. The vertices are the elements of \(\mathbb {F}_q\), with \(q\equiv 1\mod 4\); two vertices are adjacent if their difference is a nonzero square in \(\mathbb {F}_q\); see [7, 9.1.2].

  • Polar space graphs. These include polar spaces for orthogonal and unitary groups, see entries \(O^{\epsilon }_{2d}(q)\), \(O_{2d+1}(q)\), and \(U_d(q)\) in [7, Table 9.9]. Sagemath also has an implementation of polar spaces for symplectic groups (entry \(Sp_{2d}(q)\) in [loc.cit.]), but we do not use them in the database, as they have the same parameters as these for orthogonal groups.

  • Generalised quadrangle graphs, \( GQ (s,t)\) in [7, Table 9.9]. Apart from these appearing as polar space graphs, with \(s=t=q\), \(s^{2}=t=q\), and \(s=q^{2}\), \(t=q^{3}\), we provide other examples, as follows.

    • Unitary dual polar graphs. This gives \(s=q^3\), \(t=q^{2}\).

    • \( GQ (q-1,q+1)\)-graphs for q odd are constructed following Ahrens and Szekeres, see [47, 3.1.5], and for q even we provide the \(T_{2}^{*}(\mathcal {O})\) construction, see [47, 3.1.3], from a hyperoval \(\mathcal {O}\) in \( PG (2,q)\).

    • \( GQ (q+1,q-1)\) are constructed as line graphs of \( GQ (q-1,q+1)\).

  • Affine polar graphs. These are the entry \( VO ^{\epsilon }_{2d}(q)\) in [7, Table 9.9].

  • Graphs of non-degenerate hyperplanes of orthogonal polar spaces, with adjacency specified by degenerate intersection; see \( NO _{2d+1}^{\epsilon }(q)\) in [7, Table 9.9]. These are constructions by Wilbrink, cf. [9, Sect. 7.C]. The implementation in Sagemath simply takes the appropriate orbit and orbital of the orthogonal group acting on the hyperplanes using parameters of the graph, namely \(v=q^d(q^d+\epsilon )/2\), \(k=(q^d-\epsilon )(q^{d-1}+\epsilon )\).

  • Graphs of non-isotropic points of polar spaces, with adjacency specified by orthogonality. These include a number of cases.

    • Non-isotropic points of orthogonal polar spaces over \(\mathbb {F}_{2}\); see \( NO ^{\epsilon }_{2d}(2)\) in [7, Table 9.9].

    • One class of non-isotropic points of orthogonal polar spaces over \(\mathbb {F}_3\); see \( NO ^{\epsilon }_{2d}(3)\) in [7, Table 9.9].

    • One class of non-isotropic points of orthogonal polar spaces (specified by a non-degenerate quadratic form F) over \(\mathbb {F}_5\); see \( NO ^{\epsilon \perp }_{2d+1}(5)\) in [7, Table 9.9]. This is a construction by Wilbrink, cf. [9, Sect.7.D], where the class of points p is described in terms of the type of the quadric specified by \(p^\perp \cap Q\), where Q is the set of isotropic points of the space, i.e. \(Q:=\{x\in PG(2d,5)\mid F(x)=0\}\), and \(p^\perp :=\{x\in Q\mid F(p+x)=F(p)\}\). The implementation in Sagemath takes \(\{x\in PG(2d,5)\mid F(x)=\pm 1\}\) for \(\epsilon =+\), and the rest of non-isotropic points for \(\epsilon =-\).

    • Non-isotropic points of unitary polar spaces; see \( NU {d}(q)\) in [7, Table 9.9].

  • Graphs of Taylor two-graphs, see [7, Table 9.9] and [9, Sect. 7E]. Note that we implement an efficient construction that does not need all the triples of the corresponding two-graphs, by first directly constructing the descendant strongly regular graphs on \(q^3\) vertices, and a partition of its vertices into cliques. The latter provides a set to perform Seidel switching on the disjoint union with \(K_1\), and obtain the strongly regular graph on \(q^3+1\) vertices. See Sagemath documentation for graphs.TaylorTwographSRG for details.

  • Cossidente–Penttila hemisystems in \( PG (5,q)\), for q odd prime power [16], are certain partitions of points of the minus type quadric in \( PG (5,q)\) into two parts V, \(V'\) of equal size. The subgraph \(\Gamma \) of the collinearity graph of the corresponding \( GQ (q,q^{2})\) induced on V has parameters \(((q^3+1)(q+1)/2,(q^{2}+1)(q-1)/2,(q-3)/2,(q-1)^{2}/2)\). The way we construct these graphs in Sage is described in Sect. 5.3.1.

Graphs from combinatorics

  • Johnson Graphs J(m, 2), see Example 2.1.

  • Orthogonal Array block graphs \( OA (k,n)\). Sage is able to build a very substantial state-of-the-art collection of orthogonal arrays (often abbreviated as OA), thanks to a large implementation project undertaken in 2013/2014 by the first author in a very productive collaboration with Julian R. Abel and Vincent Delecroix. For the present work no new constructions of OAs were needed, and the link between Sage’s OAs and Strongly Regular Graphs databases filled in three new entries in Andries Brouwer’s database.

  • Steiner Graphs (intersection graphs of BIBD)—Sage can already build several families of Balanced Incomplete Block Designs (when \(k\le 5\), or projective planes, or other recursive constructions and fixed-size instances). More constructions from [14] were added to Sage while working on this project.

  • Goethals–Seidel graphs, see [23].

  • Haemers graphs, see [9, Sect. 8.A].

  • RSHCD—graphs from \((n,\epsilon )\)-regular symmetric Hadamard matrices M with constant diagonal, see Example 2.2 for the definition. Several constructions from the literature (and one apparently new one, cf. Sect. 5.3.2) for this class of Hadamard matrices were implemented in Sage and are available in its Hadamard matrices module.

  • Two-graph descendants. Each regular two-graph (a certain class of 3-uniform v-vertex hypergraphs having \(2\mu \) three-edges on each pair of points, cf. e.g. [7, Chap. 10]) gives rise to a strongly regular graph with parameters \((v-1,2\mu ,3\mu -v/2,\mu )\) obtained by descendant construction, see e.g. [7, Sect. 10.3].

  • Switch \( OA \) Graphs—these strongly regular graphs are obtained from OA block graphs (see above). From such a graph G obtained from an \( OA (k,n)\), the procedure is to (1) add a new isolated vertex v; (2) perform Seidel switching on the union of \(\{v\}\) and several disjoint n-cocliques of G. Note that a n-coclique in G corresponds to a parallel class of the \( OA (k,n)\), and that those are easily obtained from an \( OA (k+1,n)\) (i.e. a resolvable \( OA (k,n)\)).

  • Polhill Graphs—In [48], Polhill produced 5 new strongly regular graphs on 1024 vertices as Cayley graphs. His construction is able to produce larger strongly regular graphs of order \(\ge 4096\), though the current implementation only covers the \(n=1024\) range.

  • Mathon’s pseudo-cyclic strongly regular graphs related to symmetric conference matrices, optionally parameterised by a strongly regular graph with parameters of a Paley graph, and a skew-symmetric Latin square [42, 49].

  • Pseudo-Paley and Pasechnik graphs from skew-Hadamard matrices. These are constructions due to Goethals–Seidel [9] and Pasechnik [46], constructing graphs on \((4m-1)^{2}\) vertices from skew-Hadamard matrices of order 4m. Sage builds the corresponding skew-Hadamard matrices from a small database featuring classical constructions of skew-Hadamard matrices from [28] and small examples from (anti)-circulant matrices [22, 56].

Novel constructions

Here we collect descriptions of constructions of graphs that are in our view sufficiently novel and interesting to mention. Namely, Sect. 5.3.1 describes another construction for a known graph, Sect. 5.3.2 describes a working construction for a graph which was claimed to exist in the literature, although we were unable to verify a number of published constructions (see Sect. 7 for details). Finally, Sect. 5.3.3 discusses an unpublished construction by Ionin and Kharaghani.

Cossidente–Penttila hemisystems

The construction of the hemisystem in [16] requires building \( GQ (q^{2},q)\), which is slow. Thus we designed, following a suggestion of T. Penttila, a more efficient approach, working directly in \( PG (5,q)\). The partition in question is invariant under the subgroup \(H=\Omega _{3}(q^{2})<O_{6}^{-}(q)\). Without loss in generality H leaves the form \(B(X,Y,Z)=XY+Z^{2}\) invariant. We pick two orbits of H on the \(\mathbb {F}_{q}\)-points, one of them B-isotropic, with a representative (1 : 0 : 0), viewed as a point of \(\Pi := PG (2,q^{2})\), and the other corresponding to points of \(\Pi \) that have all the lines on them intersecting the conic of \(\Pi \) specified by B in zero or two points. We take \((1:1:\epsilon )\) as a representative, with \(\epsilon \in \mathbb {F}_{q^{2}}^{*}\) so that \(\epsilon ^{2}+1\) is not a square in \(\mathbb {F}_{q^{2}}\).

Indeed, the conic can be viewed \(\{(0:1:0)\}\cup \{(1:-t^{2}:t)\mid t \in \mathbb {F}_{q^{2}}\}\). The coefficients of a generic line on \((1:1:\epsilon )\) are \([1:-1-\epsilon b:b]\), for \(-1\ne \epsilon b\). Thus, to make sure that its intersection with the conic is always even, we need that the discriminant of \(1+(1+\epsilon b)t^{2}+tb=0\) never vanishes, and this is if and only if \(\epsilon ^{2}+1\) is not a square.

Finally, we need to adjust B, by multiplying it by appropriately chosen \(\nu \in \mathbb {F}_{q^{2}}^{*}\), so that \((1:1:\epsilon )\) becomes isotropic under the relative trace norm \((X:Y:Z)\mapsto \nu B(X,Y,Z)+(\nu B(X,Y,Z))^q\), used to define adjacency in \(\Gamma \).

Regular symmetric Hadamard matrices of order 324.

We recall the definition of \(\mathrm {RSHCD}^{+}\) and \(\mathrm {RSHCD}^{-}\) from Example 2.2. An example \(M^{+}\) of \(\mathrm {RSHCD}^{+}\) order 324 was constructed by Janko et al. in [37], and we implemented their construction in Sagemath. See [27, 45] for other examples of \(\mathrm {RSHCD}^{+}\) of order 324.

We use \(M^{+}\) to build an example \(M^{-}\) of \(\mathrm {RSHCD}^{-}\) of order 324, as follows. One is tempted to apply [27, Lemma 11] to \(M^{+}\), which says that for an \(\mathrm {RSHCD}^{\epsilon }\) matrix M built from four \(n\times n\)-blocks \(M_{ij}\), so that

$$\begin{aligned} M=\begin{pmatrix} M_{11} &{} M_{12}\\ M_{21} &{} M_{22} \end{pmatrix}, \quad \text {the matrix } T(M):=\begin{pmatrix} M_{11} &{} -M_{12}\\ -M_{21} &{} M_{22} \end{pmatrix} \end{aligned}$$

is an \(\mathrm {RSHCD}^{-\epsilon }\), provided that row sums of \(M_{11}\) and \(M_{22}\) are 0. However, the latter condition does not hold for \(M=M^{+}\). We are able to “twist” \(M^{+}\) so that the resulting matrix is amenable to this Lemma. Namely, it turns our that the matrix

$$\begin{aligned} M':=\begin{pmatrix} M_{12} &{} M_{11}\\ M_{11}^\top &{} M_{21} \end{pmatrix}, \qquad \text {where } M=M^{+}, \end{aligned}$$

is \(\mathrm {RSHCD}^{+}\), its diagonal blocks having row sums 0, as needed by (1). Interestingly, the (324, 152, 70, 72)-strongly regular graph corresponding to \(T(M')\) has a vertex-transitive automorphism group of order 2592, twice the order of the (intransitive) automorphism group of the (324, 153, 72, 72)-strongly regular graphcorresponding to \(M^{+}\). As far as we know, this is the only known example of such a vertex-transitive graph. Other graphs with such parameters were constructed in [27].

A (765,192,48,48)-graph

We were unable to implement the construction of a graph with these parameters described, as a part of an infinite family, in Ionin and Kharaghani [32]. The authors of the latter were very kind to send us an updated construction of the graph in question, which we successfully implemented in Sagemath, see [12]. This construction can be found in the documentation of the Sagemath function graphs.IoninKharaghani765Graph.

They have also posted an update [33] to [32]; we have not yet tried to implement the updated version in full generality.

Missing values

Among the 1150 realizable, according to Andries Brouwer’s database, parameter sets, our implementation can realize 1142. Up to taking graph complements, the list of currently missing entries is as follows.

  • \((196 \quad 90 \quad 40 \quad 42)\quad \)RSHCD\(^{-}\) (may not exist, cf. Sect. 7)

  • \((196 \quad 135 \quad 94 \quad 90)\quad \)Huang et al. [30]

  • \((378 \quad 116 \quad 34 \quad 36)\quad \)Muzychuk S6(n \(=\) 3, d \(=\) 3) [44]

  • \((512 \quad 133 \quad 24 \quad 38)\quad \)Godsil (q \(=\) 8, r \(=\) 3) [21]

The fisrt entry is discussed in Sect. 7. Implementation of the remaining three entries is currently in progress.

Incorrect RSHCD constructions ?

We were unable to reproduce the following two constructions of Regular Symmetric Hadamard matrices with Constant Diagonal (RSHCDs) and thus the corresponding strongly regular graphs (in the sense of [7, Sect. 10.5]).

  • In [7, Sect. 10.5.1, (i)], the construction of \(\mathrm {RSHCD}(196,-)\) is attributed to [34], in which the existence of a \((4k^{2},2k^{2}+k,k^{2}+k)\)-strongly regular graph, equivalent to a \(\mathrm {RSHCD}(196,-)\) for \(k=7\), is claimed in Theorem 8.2.26.(iii). The latter says that the \(\mathrm {RSHCD}(196,-)\) can be easily obtained from the \(\mathrm {RSHCD}(196,+)\) from [34, Theorem 8.2.26.(ii)]. While the construction of (ii) was successfully implemented in Sage, following the authors’ instructions for (iii) did not lead us to the \(\mathrm {RSHCD}(196,-)\). Communication with the authors did not solve the issue, and we are not aware of any other proof of the existence of a (196, 90, 40, 42)-strongly regular graph.

  • In [7, Sect. 10.5.1, (iii)] one finds the following claim, attributed to [58, Corollary 5.12].

    $$\begin{aligned} If\, n-1 \, and \,n+1\, { are} \,{ odd} \,{ prime} \,{ powers},\, { there} \, { exists} \,a\, \mathrm {RSHCD}(n^{2},+). \end{aligned}$$

    We implemented the construction provided in [58, Corollary 5.12], but that did not lead us to the expected strongly regular graph. We also note that while Corollary 5.12 does not claim that the provided matrices are regular, that claim appears in the theorem on which it relies. The author of [58, Corollary 5.12] did not answer our message, and we discarded this construction as broken in our work. This construction should have been able to produce a \(\mathrm {RSHCD}(676,+)\) and a \(\mathrm {RSHCD}(900,+)\). Fortunately in the end it was not required.

The following construction of RSHCDs needed a lot of effort and a number of discussions with Andries Brouwer to correct crucial misprints in several sources and combine them into a working construction.

  • In [7, Sect. 10.5.1, (iv)] one finds the following claim, attributed to [58, Corollary 5.16].

    $$\begin{aligned}&If\, a+1 \,{ is} \,a\, { prime}\, { power}\, { and}\, { there}\, { exists}\, a\, { symmetric}\, { conference}\, { matrix} \\&\qquad \qquad \qquad { of}\, { order}\, a,\, { then} \,{ there}\, { exists}\, a\, \mathrm {RSHCD}(a^{2},+). \end{aligned}$$

    Following [loc.cit.] did not lead us to the expected result; as it turns out, [loc.cit.] has a typo, and the correct formulae should be taken from the original source [57, Corollary 17] by Wallis and Whiteman. An essential ingredient in this construction, referred to in [57], is a special pair of difference sets due to Szekeres [52, Theorem 16], defined in (4.1) and (4.2) there. However, (4.2) has a typo (it has − instead of \(+\) sign), invalidating the construction. Fortunately, a correct definition for may be found [58, Theorem 2.6, p. 303]. This construction allowed us to produce \(\mathrm {RSHCD}(676,+)\) and a \(\mathrm {RSHCD}(900,+)\).

Entries added to database during this work

By linking Sage’s database of Orthogonal Arrays with its database of Strongly Regular Graphs, we were able to fill in the following three values:

  • (196, 78, 32, 30)—can be obtained from an \( OA (6,14)\) [55]

  • (324, 102, 36, 30)—can be obtained from an \( OA (6,18)\) [1]

  • (324, 119, 46, 42)—can be obtained from an \( OA (7,18)\) [1]

This can be seen as a by-product of making two mathematical databases, which formerly only existed in printed form, inter-operable. In our implementation, any update of the combinatorial designs databases can be beneficial for the database of strongly regular graphs.

We obtained a (1024, 462, 206, 210)-graph while going through the constructions from [48], although this value did not appear in the online database at that time.

Note added in proof

More details on constructions of RSHCDs discussed in Sect. 7 are available in preprint by Andries E. Brouwer. A construction of the (378, 116, 34, 36)-graph from [44] (along with other constructions from [44]), mentioned as missing in Sect. 6, has been implemented by Rowan Schrecker (see and will be available in [13, 54] soon.