{
"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
}