{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Nonexistence of a distance-regular graph with intersection array $\\{(2r+1)(4r+1)(4t-1), 8r(4rt-r+2t), (r+t)(4r+1); 1, (r+t)(4r+1), 4r(2r+1)(4t-1)\\}$\n",
"\n",
"We will show that a distance-regular graph with intersection array $\\{(2r+1)(4r+1)(4t-1), 8r(4rt-r+2t), (r+t)(4r+1); 1, (r+t)(4r+1), 4r(2r+1)(4t-1)\\}$, where $r, t \\ge 1$, does not exist. The intersection array arises for graphs of diameter $3$ with $b_2 = c_2$ and $p^3_{33}$ even which are $Q$-polynomial with respect to the natural ordering of eigenvalues and contain a maximal $1$-code that is both locally regular and last subconstituent perfect. See [Extremal $1$-codes in distance-regular graphs of diameter $3$](http://link.springer.com/article/10.1007/s10623-012-9651-0) by A. Jurišić and J. Vidali, where the theory for dealing with such intersection arrays has been developed."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%display latex\n",
"import drg"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This family is not entirely feasible, however, we will find two infinite feasible subfamilies."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"8*(16*r^2*t - 4*r^2 + 12*r*t - 2*r + t)*(2*r + 1)*t/(r + t)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r, t = var(\"r t\")\n",
"p = drg.DRGParameters([(2*r+1)*(4*r+1)*(4*t-1), 8*r*(4*r*t-r+2*t), (r+t)*(4*r+1)],\n",
" [1, (r+t)*(4*r+1), 4*r*(2*r+1)*(4*t-1)])\n",
"p.order(expand=True, factor=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The two feasible subfamilies can be obtained by setting $t = 4r^2$ and $t = 2r(2r+1)$, respectively."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Parameters of a distance-regular graph with intersection array {(4*r + 1)^2*(4*r - 1)*(2*r + 1), 8*(16*r^2 + 8*r - 1)*r^2, (4*r + 1)^2*r; 1, (4*r + 1)^2*r, 4*(4*r + 1)*(4*r - 1)*(2*r + 1)*r}"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"64*(8*r^2 + 4*r - 1)*(2*r + 1)*r^2"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pA = p.subs(t == 4*r^2)\n",
"pA.intersectionArray(expand=True, factor=True)\n",
"show(pA)\n",
"show(pA.order(expand=True, factor=True))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Parameters of a distance-regular graph with intersection array {(16*r^2 + 8*r - 1)*(4*r + 1)*(2*r + 1), 8*(4*r + 3)*(4*r + 1)*r^2, (4*r + 3)*(4*r + 1)*r; 1, (4*r + 3)*(4*r + 1)*r, 4*(16*r^2 + 8*r - 1)*(2*r + 1)*r}"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"128*(2*r + 1)^3*r^2"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pB = p.subs(t == 2*r*(2*r+1))\n",
"pB.intersectionArray(expand=True, factor=True)\n",
"show(pB)\n",
"show(pB.order(expand=True, factor=True))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us check that the first members of each family are indeed feasible. We skip the family nonexistence check since the intersection array of the entire family is already included."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Parameters of a distance-regular graph with intersection array {225, 184, 25; 1, 25, 180}"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"2112"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pA1 = pA.subs(r == 1)\n",
"show(pA1)\n",
"show(pA1.order())\n",
"pA1.check_feasible(skip=[\"family\"])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Parameters of a distance-regular graph with intersection array {345, 280, 35; 1, 35, 276}"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"3456"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pB1 = pB.subs(r == 1)\n",
"show(pB1)\n",
"show(pB1.order())\n",
"pB1.check_feasible(skip=[\"family\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now compute the Krein parameters. We have $q^1_{13} = q^1_{31} = q^3_{11} = 0$, so the graph would be $Q$-polynomial with respect to the natural ordering of the eigenvalues."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[0, 0, 0]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.set_vars([t, r])\n",
"[p.q[1, 1, 3], p.q[1, 3, 1], p.q[3, 1, 1]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now compute the triple intersection numbers with respect to three vertices $u, v, w$ at mutual distances $3$. Let us first check that $p^3_{33}$ is positive."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"4*r"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.p[3, 3, 3].factor().simplify_full()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The parameter $\\alpha$ will denote the number of vertices at distance $3$ from all of $u, v, w$. Let us count the number of vertices at distance $1$ or $2$ from one of $u, v, w$ and $3$ from the other two vertices."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[(alpha - 4*r + 1)*(4*r + 1)/(4*r - 1),\n",
" (alpha - 4*r + 1)*(4*r + 1)/(4*r - 1),\n",
" (alpha - 4*r + 1)*(4*r + 1)/(4*r - 1),\n",
" -8*(alpha - 4*r + 1)*r/(4*r - 1),\n",
" -8*(alpha - 4*r + 1)*r/(4*r - 1),\n",
" -8*(alpha - 4*r + 1)*r/(4*r - 1)]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha = var(\"alpha\")\n",
"S333 = p.tripleEquations(3, 3, 3, params={alpha: (3, 3, 3)})\n",
"[S333[s].expand().factor() for s in [(1, 3, 3), (3, 1, 3), (3, 3, 1), (2, 3, 3), (3, 2, 3), (3, 3, 2)]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that for the above expressions to be nonnegative, we must have $a = 4r - 1$, and then they are all equal to zero. Consequently, all of the $a_3$ vertices adjacent to one of $u, v, w$ which are at distance $3$ from another of these vertices are at distance $2$ from the remaining vertex in the triple."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(2*r + 1)*(4*t - 1)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"[(2*r + 1)*(4*t - 1),\n",
" (2*r + 1)*(4*t - 1),\n",
" (2*r + 1)*(4*t - 1),\n",
" (2*r + 1)*(4*t - 1),\n",
" (2*r + 1)*(4*t - 1),\n",
" (2*r + 1)*(4*t - 1)]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S333a = S333.subs(alpha == 4*r - 1)\n",
"show(p.a[3].expand().factor())\n",
"[S333a[s].expand().factor() for s in [(1, 2, 3), (3, 1, 2), (2, 3, 1), (2, 1, 3), (3, 2, 1), (1, 3, 2)]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The above results mean that any two vertices $v, w$ at distance $3$ uniquely define a set $C$ of $4r + 2$ vertices mutually at distance $3$ containing $v, w$ - i.e., a $1$-code in the graph. Furthermore, since $a_3$ is nonzero, for each $u$ in $C \\setminus \\{v, w\\}$, there are vertices at distances $3, 1, 2$ from $u, v, w$. We now check that $c_3 = a_3 p^3_{33}$."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"4*(2*r + 1)*r*(4*t - 1)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"4*(2*r + 1)*r*(4*t - 1)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show(p.c[3].expand().factor())\n",
"show((p.a[3] * p.p[3, 3, 3]).expand().factor())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let $u'$ be a neighbour of $v$. Since $u'$ is not in $C$, it may be at distance $3$ from at most one vertex of $C$. As there are $c_3$ and $a_3$ neighbours of $v$ that are at distances $2$ and $3$ from $w$, respectively, the above equality implies that each neighbour of $v$ is at distance $3$ from precisely one vertex of $C$.\n",
"\n",
"Suppose now that $u'$ is at distance 2 from $w$. Let us count the number of vertices at distances $1, 1, 3$ from $u', v, w$."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"2*t - 1/2"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"beta = var(\"beta\")\n",
"S123 = p.tripleEquations(1, 2, 3, params={beta: (3, 3, 3)}).subs(beta == 1)\n",
"S123[1, 1, 3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As this value is nonintegral, we conclude that a graph with intersection array $\\{(2r+1)(4r+1)(4t-1), 8r(4rt-r+2t), (r+t)(4r+1); 1, (r+t)(4r+1), 4r(2r+1)(4t-1)\\}$ and $r, t \\ge 1$ **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
}