{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Nonexistence of a $Q$-polynomial association scheme with Krein array $\\{(r^2+1)/2, (r^2-1)/2, (r^2+1)^2/(2r(r+1)), (r-1)(r^2+1)/(4r), (r^2+1)/(2r); 1, (r-1)(r^2+1)/(2r(r+1)), (r+1)(r^2 + 1)/(4r), (r-1)(r^2+1)/(2r), (r^2+1)/2\\}$ and $r \\equiv 3 \\pmod{4}$\n", "\n", "We show that a $Q$-polynomial association scheme with Krein array\n", "\\begin{multline*}\n", "\\{(r^2+1)/2, (r^2-1)/2, (r^2+1)^2/(2r(r+1)), (r-1)(r^2+1)/(4r), (r^2+1)/(2r); \\\\\n", "1, (r-1)(r^2+1)/(2r(r+1)), (r+1)(r^2 + 1)/(4r), (r-1)(r^2+1)/(2r), (r^2+1)/2\\}\n", "\\end{multline*}\n", "and $r \\equiv 3 \\pmod{4}$ does not exist. For $r \\equiv 1 \\pmod{4}$ a prime power, this Krein array is realized by a scheme derived by [Moorhouse and Williford](https://arxiv.org/pdf/1504.01067.pdf) from a double cover of the $C_2(r)$ dual polar 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 $2(r+1)(r^2+1)$ vertices." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "2*(r^2 + 1)*(r + 1)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = var(\"r\")\n", "p = drg.QPolyParameters([(r^2+1)/2, (r^2-1)/2, (r^2+1)^2/(2*r*(r+1)), (r-1)*(r^2+1)/(4*r), (r^2+1)/(2*r)],\n", " [1, (r-1)*(r^2+1)/(2*r*(r+1)), (r+1)*(r^2 + 1)/(4*r), (r-1)*(r^2+1)/(2*r), (r^2+1)/2])\n", "p.order(factor=True, simplify=True)" ] }, { "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. Additionally, we have $q^4_{55} = q^5_{45} = q^5_{54} = 0$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0: [ 1 0 0 0 0 0]\n", " [ 0 1/2*r^2 + 1/2 0 0 0 0]\n", " [ 0 0 1/2*r^3 + r^2 + 1/2*r 0 0 0]\n", " [ 0 0 0 r^3 + r 0 0]\n", " [ 0 0 0 0 1/2*r^3 + 1/2*r 0]\n", " [ 0 0 0 0 0 1/2*r^2 + 1/2]\n", "\n", "1: [ 0 1 0 0 0 0]\n", " [ 1 0 1/2*r^2 - 1/2 0 0 0]\n", " [ 0 1/2*r^2 - 1/2 0 1/2*r^3 + 1/2*r^2 + 1/2*r + 1/2 0 0]\n", " [ 0 0 1/2*r^3 + 1/2*r^2 + 1/2*r + 1/2 0 1/2*r^3 - 1/2*r^2 + 1/2*r - 1/2 0]\n", " [ 0 0 0 1/2*r^3 - 1/2*r^2 + 1/2*r - 1/2 0 1/2*r^2 + 1/2]\n", " [ 0 0 0 0 1/2*r^2 + 1/2 0]\n", "\n", "2: [ 0 0 1 0 0 0]\n", " [ 0 1/2*(r^3 - r^2 + r - 1)/(r^2 + r) 0 1/2*(r^4 + 2*r^2 + 1)/(r^2 + r) 0 0]\n", " [ 1 0 1/4*(r^4 + 4*r^3 - 4*r - 1)/r 0 1/4*(r^4 + 2*r^2 + 1)/r 0]\n", " [ 0 1/2*(r^4 + 2*r^2 + 1)/(r^2 + r) 0 (r^5 + r^3 - r^2 - 1)/(r^2 + r) 0 1/2*(r^4 + 2*r^2 + 1)/(r^2 + r)]\n", " [ 0 0 1/4*(r^4 + 2*r^2 + 1)/r 0 1/4*(r^4 - 1)/r 0]\n", " [ 0 0 0 1/2*(r^4 + 2*r^2 + 1)/(r^2 + r) 0 1/2*(r^3 - r^2 + r - 1)/(r^2 + r)]\n", "\n", "3: [ 0 0 0 1 0 0]\n", " [ 0 0 1/4*(r^3 + r^2 + r + 1)/r 0 1/4*(r^3 - r^2 + r - 1)/r 0]\n", " [ 0 1/4*(r^3 + r^2 + r + 1)/r 0 1/2*(r^4 + r^3 - r - 1)/r 0 1/4*(r^3 + r^2 + r + 1)/r]\n", " [ 1 0 1/2*(r^4 + r^3 - r - 1)/r 0 1/2*(r^4 - r^3 + 2*r^2 - r + 1)/r 0]\n", " [ 0 1/4*(r^3 - r^2 + r - 1)/r 0 1/2*(r^4 - r^3 + 2*r^2 - r + 1)/r 0 1/4*(r^3 - r^2 + r - 1)/r]\n", " [ 0 0 1/4*(r^3 + r^2 + r + 1)/r 0 1/4*(r^3 - r^2 + r - 1)/r 0]\n", "\n", "4: [ 0 0 0 0 1 0]\n", " [ 0 0 0 1/2*(r^3 - r^2 + r - 1)/r 0 1/2*(r^2 + 1)/r]\n", " [ 0 0 1/4*(r^4 + 2*r^3 + 2*r^2 + 2*r + 1)/r 0 1/4*(r^4 + 2*r^3 - 2*r - 1)/r 0]\n", " [ 0 1/2*(r^3 - r^2 + r - 1)/r 0 (r^4 - r^3 + 2*r^2 - r + 1)/r 0 1/2*(r^3 - r^2 + r - 1)/r]\n", " [ 1 0 1/4*(r^4 + 2*r^3 - 2*r - 1)/r 0 1/4*(r^4 - 2*r^3 + 2*r^2 - 2*r + 1)/r 0]\n", " [ 0 1/2*(r^2 + 1)/r 0 1/2*(r^3 - r^2 + r - 1)/r 0 0]\n", "\n", "5: [ 0 0 0 0 0 1]\n", " [ 0 0 0 0 1/2*r^2 + 1/2 0]\n", " [ 0 0 0 1/2*r^3 + 1/2*r^2 + 1/2*r + 1/2 0 1/2*r^2 - 1/2]\n", " [ 0 0 1/2*r^3 + 1/2*r^2 + 1/2*r + 1/2 0 1/2*r^3 - 1/2*r^2 + 1/2*r - 1/2 0]\n", " [ 0 1/2*r^2 + 1/2 0 1/2*r^3 - 1/2*r^2 + 1/2*r - 1/2 0 0]\n", " [ 1 0 1/2*r^2 - 1/2 0 0 0]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.kreinParameters(factor=True, simplify=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The intersection numbers can be checked to be nonnegative and integral for all odd values of $r \\ge 3$." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0: [ 1 0 0 0 0 0]\n", " [ 0 (r + 1)*r 0 0 0 0]\n", " [ 0 0 r^3 0 0 0]\n", " [ 0 0 0 r^3 0 0]\n", " [ 0 0 0 0 (r + 1)*r 0]\n", " [ 0 0 0 0 0 1]\n", "\n", "1: [ 0 1 0 0 0 0]\n", " [ 1 1/2*r - 1/2 r^2 0 1/2*r - 1/2 0]\n", " [ 0 r^2 1/2*(r - 1)*r^2 1/2*(r - 1)*r^2 0 0]\n", " [ 0 0 1/2*(r - 1)*r^2 1/2*(r - 1)*r^2 r^2 0]\n", " [ 0 1/2*r - 1/2 0 r^2 1/2*r - 1/2 1]\n", " [ 0 0 0 0 1 0]\n", "\n", "2: [ 0 0 1 0 0 0]\n", " [ 0 r + 1 1/2*(r + 1)*(r - 1) 1/2*(r + 1)*(r - 1) 0 0]\n", " [ 1 1/2*(r + 1)*(r - 1) 1/2*(r + 1)*(r - 1)*r 1/2*(r - 1)^2*r 1/2*(r + 1)*(r - 1) 0]\n", " [ 0 1/2*(r + 1)*(r - 1) 1/2*(r - 1)^2*r 1/2*(r + 1)*(r - 1)*r 1/2*(r + 1)*(r - 1) 1]\n", " [ 0 0 1/2*(r + 1)*(r - 1) 1/2*(r + 1)*(r - 1) r + 1 0]\n", " [ 0 0 0 1 0 0]\n", "\n", "3: [ 0 0 0 1 0 0]\n", " [ 0 0 1/2*(r + 1)*(r - 1) 1/2*(r + 1)*(r - 1) r + 1 0]\n", " [ 0 1/2*(r + 1)*(r - 1) 1/2*(r - 1)^2*r 1/2*(r + 1)*(r - 1)*r 1/2*(r + 1)*(r - 1) 1]\n", " [ 1 1/2*(r + 1)*(r - 1) 1/2*(r + 1)*(r - 1)*r 1/2*(r - 1)^2*r 1/2*(r + 1)*(r - 1) 0]\n", " [ 0 r + 1 1/2*(r + 1)*(r - 1) 1/2*(r + 1)*(r - 1) 0 0]\n", " [ 0 0 1 0 0 0]\n", "\n", "4: [ 0 0 0 0 1 0]\n", " [ 0 1/2*r - 1/2 0 r^2 1/2*r - 1/2 1]\n", " [ 0 0 1/2*(r - 1)*r^2 1/2*(r - 1)*r^2 r^2 0]\n", " [ 0 r^2 1/2*(r - 1)*r^2 1/2*(r - 1)*r^2 0 0]\n", " [ 1 1/2*r - 1/2 r^2 0 1/2*r - 1/2 0]\n", " [ 0 1 0 0 0 0]\n", "\n", "5: [ 0 0 0 0 0 1]\n", " [ 0 0 0 0 (r + 1)*r 0]\n", " [ 0 0 0 r^3 0 0]\n", " [ 0 0 r^3 0 0 0]\n", " [ 0 (r + 1)*r 0 0 0 0]\n", " [ 1 0 0 0 0 0]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "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 $r \\ge 5$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "{(1, 1): 1/8*(r^2 + 1)*(r + 1)*(r - 5),\n", " (1, 2): 1/4*(r^3 + 2*r^2 - 3*r - 2)*(r^2 + 1),\n", " (1, 3): 1/2*(r^4 - 2*r - 1)*r,\n", " (1, 4): 1/4*(r^2 + 1)*(r + 1)^2*(r - 2),\n", " (1, 5): 1/4*(r^2 + 1)*(r - 1)^2,\n", " (2, 2): 1/8*(r^3 + 3*r^2 + 2*r - 8)*(r^2 + 1)*(r + 1),\n", " (2, 3): 1/2*(r^2 + 2*r + 2)*(r^2 + 1)*(r + 1)*(r - 1),\n", " (2, 4): 1/4*(r^5 + 2*r^4 + 2*r^3 - 2*r^2 - 3*r - 4)*r,\n", " (2, 5): 1/4*(r^3 + 2*r^2 - 3*r - 2)*(r^2 + 1),\n", " (3, 3): 1/2*(r^4 + r^2 - r - 2)*(r^2 + 1),\n", " (3, 4): 1/2*(r^4 + r^2 - 2*r - 2)*(r^2 + 1),\n", " (3, 5): 1/2*(r^4 - 2*r - 1)*r,\n", " (4, 4): 1/8*(r^2 + r + 4)*(r^2 + 1)*(r + 1)*(r - 2),\n", " (4, 5): 1/4*(r^2 + 1)*(r + 1)^2*(r - 2),\n", " (5, 5): 1/8*(r^2 + 1)*(r + 1)*(r - 5)}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.check_absoluteBound(expand=True, factor=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us check that the smallest admissible case with $r \\equiv 3 \\pmod{4}$, namely $r = 7$, satisfies the known feasibility conditions. We skip the family nonexistence check since the Krein array of the members of family with $r \\equiv 3 \\pmod{4}$ is already included." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "p.subs(r == 7).check_feasible(skip=[\"family\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now compute the triple intersection numbers with respect to three vertices $x, y, z$ mutually in relation $1$. Note that we have $p^1_{11} = (r-1)/2 > 0$ for all $r \\ge 5$, so such triples must exist." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0: [0 0 0 0 0 0]\n", " [0 1 0 0 0 0]\n", " [0 0 0 0 0 0]\n", " [0 0 0 0 0 0]\n", " [0 0 0 0 0 0]\n", " [0 0 0 0 0 0]\n", "\n", "1: [ 0 1 0 0 0 0]\n", " [ 1 1/4*r - 5/4 0 0 1/4*r - 1/4 0]\n", " [ 0 0 r^2 0 0 0]\n", " [ 0 0 0 0 0 0]\n", " [ 0 1/4*r - 1/4 0 0 1/4*r - 1/4 0]\n", " [ 0 0 0 0 0 0]\n", "\n", "2: [ 0 0 0 0 0 0]\n", " [ 0 0 r^2 0 0 0]\n", " [ 0 r^2 1/4*r^3 - 5/4*r^2 1/4*r^3 - 1/4*r^2 0 0]\n", " [ 0 0 1/4*r^3 - 1/4*r^2 1/4*r^3 - 1/4*r^2 0 0]\n", " [ 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0]\n", "\n", "3: [ 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0]\n", " [ 0 0 1/4*r^3 - 1/4*r^2 1/4*r^3 - 1/4*r^2 0 0]\n", " [ 0 0 1/4*r^3 - 1/4*r^2 1/4*r^3 - 5/4*r^2 r^2 0]\n", " [ 0 0 0 r^2 0 0]\n", " [ 0 0 0 0 0 0]\n", "\n", "4: [ 0 0 0 0 0 0]\n", " [ 0 1/4*r - 1/4 0 0 1/4*r - 1/4 0]\n", " [ 0 0 0 0 0 0]\n", " [ 0 0 0 r^2 0 0]\n", " [ 0 1/4*r - 1/4 0 0 1/4*r - 5/4 1]\n", " [ 0 0 0 0 1 0]\n", "\n", "5: [0 0 0 0 0 0]\n", " [0 0 0 0 0 0]\n", " [0 0 0 0 0 0]\n", " [0 0 0 0 0 0]\n", " [0 0 0 0 1 0]\n", " [0 0 0 0 0 0]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.dualEigenmatrix(expand=True, factor=True, simplify=True)\n", "p.tripleEquations(1, 1, 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that there is a single solution, which can only be integral if $r \\equiv 1 \\pmod{4}$. We thus conclude that a $Q$-polynomial association scheme with Krein array\n", "\\begin{multline*}\n", "\\{(r^2+1)/2, (r^2-1)/2, (r^2+1)^2/(2r(r+1)), (r-1)(r^2+1)/(4r), (r^2+1)/(2r); \\\\\n", "1, (r-1)(r^2+1)/(2r(r+1)), (r+1)(r^2 + 1)/(4r), (r-1)(r^2+1)/(2r), (r^2+1)/2\\}\n", "\\end{multline*}\n", "and $r \\equiv 3 \\pmod{4}$ **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 }