{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Nonexistence of a $Q$-polynomial association scheme with Krein array $\\{m, m-1, m(r^2-1)/r^2, m-r^2+1; 1, m/r^2, r^2-1, m\\}$ and $m$ odd\n", "\n", "We show that a $Q$-polynomial association scheme with Krein array $\\{m, m-1, m(r^2-1)/r^2, m-r^2+1; 1, m/r^2, r^2-1, m\\}$ and $m$ odd does not exist. This Krein array is feasible for all integers $m$ and $r$ such that $0 < 2(r^2-1) \\le m \\le r(r-1)(r+2)$ and $m(r+1)$ is even. A scheme with such a Krein array has a (pseudo)-Latin square strongly regular graph with parameters $(v, k, \\lambda, \\mu) = (m^2, (m-1)r^2, m + r^2(r^2-3), r^2(r^2-1))$ as its $Q$-polynomial quotient. Therefore, we say that such a scheme is of *Latin square type*.\n", "\n", "There are several examples of $Q$-polynomial association schemes with such a Krein array. For $(r, m) = (2, 6)$ and $(r, m) = (3, 16)$, this Krein array is realized by the schemes of roots of the lattices $E_6$ and OBW16. For $(r, m) = (2^{ij}, 2^{i(2j+1)})$, there are $\\phi(2j+1)/2$ non-isomorphic examples arising from Kasami codes for each choice of positive integers $i$ and $j$ (here, $\\phi$ represents Euler's totient function). In particular, the Krein array obtained by setting $i = j = 1$ uniquely determines the halved $8$-cube.\n", "\n", "In the case when $r$ is a prime power and $m = r^3$, the formal dual of this parameter set (i.e., a distance-regular graph with the corresponding intersection array) is realized by a Pasechnik graph." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%display latex\n", "import drg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Such a scheme would have $2m^2$ vertices." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "2*m^2" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m, r = var(\"m r\")\n", "p = drg.QPolyParameters([m, m-1, m*(r^2-1)/r^2, m-r^2+1], [1, m/r^2, r^2-1, m])\n", "p.order(factor=True, simplify=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This scheme is $Q$-bipartite, so it has $q^h_{ij} = 0$ whenever $h+i+j$ is odd, or $h, i, j$ do not satisfy the triangle inequality." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0: [ 1 0 0 0 0]\n", " [ 0 m 0 0 0]\n", " [ 0 0 (m - 1)*r^2 0 0]\n", " [ 0 0 0 (m - 1)*m 0]\n", " [ 0 0 0 0 -(r^2 - m - 1)*(m - 1)]\n", "\n", "1: [ 0 1 0 0 0]\n", " [ 1 0 m - 1 0 0]\n", " [ 0 m - 1 0 (m - 1)*(r + 1)*(r - 1) 0]\n", " [ 0 0 (m - 1)*(r + 1)*(r - 1) 0 -(r^2 - m - 1)*(m - 1)]\n", " [ 0 0 0 -(r^2 - m - 1)*(m - 1) 0]\n", "\n", "2: [ 0 0 1 0 0]\n", " [ 0 m/r^2 0 m*(r + 1)*(r - 1)/r^2 0]\n", " [ 1 0 r^4 - 3*r^2 + m 0 -(r^2 - m - 1)*(r + 1)*(r - 1)]\n", " [ 0 m*(r + 1)*(r - 1)/r^2 0 (m*r^2 - 2*r^2 + 1)*m/r^2 0]\n", " [ 0 0 -(r^2 - m - 1)*(r + 1)*(r - 1) 0 (r^2 - m)*(r^2 - m - 1)]\n", "\n", "3: [ 0 0 0 1 0]\n", " [ 0 0 (r + 1)*(r - 1) 0 -r^2 + m + 1]\n", " [ 0 (r + 1)*(r - 1) 0 m*r^2 - 2*r^2 + 1 0]\n", " [ 1 0 m*r^2 - 2*r^2 + 1 0 -(r^2 - m - 1)*(m - 2)]\n", " [ 0 -r^2 + m + 1 0 -(r^2 - m - 1)*(m - 2) 0]\n", "\n", "4: [ 0 0 0 0 1]\n", " [ 0 0 0 m 0]\n", " [ 0 0 (r + 1)*(r - 1)*r^2 0 -(r^2 - m)*r^2]\n", " [ 0 m 0 (m - 2)*m 0]\n", " [ 1 0 -(r^2 - m)*r^2 0 r^4 - 2*m*r^2 + m^2 + r^2 - 2]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.kreinParameters(factor=True, simplify=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Krein parameters and intersection numbers can be checked to be nonnegative for all integers $m$ and $r$ such that $1 < r^2 \\le m \\le r(r-1)(r+2)$. The intersection numbers are integral when $r$ is odd - however, when it is even, $m$ must also be even." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0: [ 1 0 0 0 0]\n", " [ 0 (m - 1)*r^2 0 0 0]\n", " [ 0 0 -2*(r^2 - m - 1)*(m - 1) 0 0]\n", " [ 0 0 0 (m - 1)*r^2 0]\n", " [ 0 0 0 0 1]\n", "\n", "1: [ 0 1 0 0 0]\n", " [ 1 1/2*(r^3 - r^2 + m - 2*r)*(r + 1) -(r^2 - m - 1)*(r + 1)*(r - 1) 1/2*(r^3 + r^2 - m - 2*r)*(r - 1) 0]\n", " [ 0 -(r^2 - m - 1)*(r + 1)*(r - 1) 2*(r^2 - m)*(r^2 - m - 1) -(r^2 - m - 1)*(r + 1)*(r - 1) 0]\n", " [ 0 1/2*(r^3 + r^2 - m - 2*r)*(r - 1) -(r^2 - m - 1)*(r + 1)*(r - 1) 1/2*(r^3 - r^2 + m - 2*r)*(r + 1) 1]\n", " [ 0 0 0 1 0]\n", "\n", "2: [ 0 0 1 0 0]\n", " [ 0 1/2*(r + 1)*(r - 1)*r^2 -(r^2 - m)*r^2 1/2*(r + 1)*(r - 1)*r^2 0]\n", " [ 1 -(r^2 - m)*r^2 2*r^4 - 4*m*r^2 + 2*m^2 + 2*r^2 - 4 -(r^2 - m)*r^2 1]\n", " [ 0 1/2*(r + 1)*(r - 1)*r^2 -(r^2 - m)*r^2 1/2*(r + 1)*(r - 1)*r^2 0]\n", " [ 0 0 1 0 0]\n", "\n", "3: [ 0 0 0 1 0]\n", " [ 0 1/2*(r^3 + r^2 - m - 2*r)*(r - 1) -(r^2 - m - 1)*(r + 1)*(r - 1) 1/2*(r^3 - r^2 + m - 2*r)*(r + 1) 1]\n", " [ 0 -(r^2 - m - 1)*(r + 1)*(r - 1) 2*(r^2 - m)*(r^2 - m - 1) -(r^2 - m - 1)*(r + 1)*(r - 1) 0]\n", " [ 1 1/2*(r^3 - r^2 + m - 2*r)*(r + 1) -(r^2 - m - 1)*(r + 1)*(r - 1) 1/2*(r^3 + r^2 - m - 2*r)*(r - 1) 0]\n", " [ 0 1 0 0 0]\n", "\n", "4: [ 0 0 0 0 1]\n", " [ 0 0 0 (m - 1)*r^2 0]\n", " [ 0 0 -2*(r^2 - m - 1)*(m - 1) 0 0]\n", " [ 0 (m - 1)*r^2 0 0 0]\n", " [ 1 0 0 0 0]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.set_vars([m, r])\n", "p.pTable(factor=True, simplify=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By the absolute bound for $(1, 1)$, such a scheme is only feasible when $m \\ge 2(r^2-1)$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "{(1, 1): -1/2*(2*r^2 - m - 2)*(m - 1),\n", " (1, 2): (m*r^2 - r^2 - m)*m,\n", " (1, 3): (m^2 - m - 1)*(m - 1),\n", " (1, 4): -(r^2 - m)*(m - 1)*m,\n", " (2, 2): 1/2*m^2*r^4 - m*r^4 + 1/2*r^4 + 1/2*m*r^2 - m^2 - 1/2*r^2,\n", " (2, 3): (m^2*r^2 - 2*m*r^2 + r^2 - m)*m,\n", " (2, 4): -(m*r^4 - m^2*r^2 - r^4 + r^2 + m + 1)*(m - 1),\n", " (3, 3): 1/2*(m^3 - 2*m^2 - 1)*m,\n", " (3, 4): -(m^2*r^2 - m^3 - 2*m*r^2 + m^2 + r^2 + 2*m - 1)*m,\n", " (4,\n", " 4): 1/2*m^2*r^4 - m^3*r^2 - m*r^4 + 1/2*m^4 + m^2*r^2 + 1/2*r^4 + 1/2*m*r^2 - 3/2*m^2 - 1/2*r^2}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.check_absoluteBound(expand=True, factor=True, simplify=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us check that the smallest admissible case with $m$ odd, namely $(r, m) = (3, 17)$, satisfies the known feasibility conditions. We skip the family nonexistence check since the Krein array of the members of family with $r, m$ odd is already included." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "p.subs(r == 3, m == 17).check_feasible(skip=[\"family\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now compute the triple intersection numbers with respect to three vertices $x, y, z$ such that $x$ is in relation $1$ with $y$ and $z$, and $y$ is in relation $2$ with $z$. Note that we have $p^2_{11} = r^2 (r^2-1)/2 > 0$ for all $r \\ge 2$, so such triples must exist. The parameter $\\alpha$ will denote the number of vertices in relation $1$ to all of $x, y, z$." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/2*r^3 + 1/2*r^2 + alpha - 1/2*m + r" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S112 = p.tripleEquations(1, 1, 2, params={'alpha': (1, 1, 1)})\n", "S112[1, 1, 3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the above triple intersection number can only be integral when $m$ is even. We thus conclude that a $Q$-polynomial association scheme with Krein array $\\{m, m-1, m(r^2-1)/r^2, m-r^2+1; 1, m/r^2, r^2-1, m\\}$ and $m$ odd **does not exist**." ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 8.9.beta2", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15" } }, "nbformat": 4, "nbformat_minor": 2 }