{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# From the octahedron to $E_8$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Try to work out the problem in John Carlos Baez's post ."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$a+b\\sqrt{2}+(c+d\\sqrt{2})i+(e+f\\sqrt{2})j+(g+h\\sqrt{2})k$"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import display, HTML\n",
"import sympy as sy"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"sy.init_printing()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAArCAYAAACuAHIQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABMUlEQVQ4Ee2VYQ0CMQyFN4IAgoTDwQUJSEADOOA0IIEgAQlgARyABMDB8b2xXna7g/CTEJq8bHu0pdd2navr2qVwzpXgDEYpr/0Q0nnvRyxbcAVTUICu5NZorEANOp4HXfPXzF85zc2XZKNpImLbgT24AZVbzSRuZS3htflUvuQDfz4MT0E+rsrPVzDMOrUo865gqbRHNO809ypa+CQiSOxnKe6sySO3hlNaZ8aHmyJF0BmEcLo1t1zZrlLLIDqR90IG1qIHiAvEnbVPNL8JKpv86ZmfdWmhnq/DS2WU9FwohOZ2v1OW14151drbSOR8g6IcLbWa2AfaWcVZ6JArBoX0byDmYJ1xKlhIXRMzhD6opSgjRK9XyH+IOfaF5pzyncqYQ4nRJJDR+shBbvpwtLAeMfw5hETl+sAAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle \\frac{1}{2}$"
],
"text/plain": [
"1/2"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"h = sy.S(1)/2\n",
"h"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Express the vectors in the orthonormal basis."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"v1 = sy.Matrix([h, 0, h, 0, h, 0, h, 0])\n",
"v2 = sy.Matrix([0, h, 0, h, 0, 0, 0, 0])\n",
"v3 = sy.Matrix([0, 0, 1, 0, 0, 0, 0, 0])\n",
"v4 = sy.Matrix([0, 0, 0, h, 0, h, 0, 0])\n",
"v5 = sy.Matrix([0, 0, 0, 0, 1, 0, 0, 0])\n",
"v6 = sy.Matrix([0, 0, 0, 0, 0, h, 0, h])\n",
"v7 = sy.Matrix([0, 0, 0, 0, 0, 0, 1, 0])\n",
"v8 = sy.Matrix([0, 0, 0, 0, 0, 0, 0, 1])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"vs = {1: v1, 2: v2, 3: v3, 4: v4, 5: v5, 6: v6, 7: v7, 8: v8}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Verify that they look like we mean them to."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def v_string(v):\n",
" i, j, k = sy.symbols('i j k')\n",
" s = sy.sqrt(2)\n",
" vec = sy.Matrix([1, s, i, i*s, j, j*s, k, k*s])\n",
" return sy.latex(sy.simplify((v.T @ vec)[0]))\n",
"\n",
"def display_v(v):\n",
" display(HTML('${}$'.format(v_string(v))))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\\begin{align}v_{1}&=\\frac{i}{2} + \\frac{j}{2} + \\frac{k}{2} + \\frac{1}{2}\\\\v_{2}&=\\frac{\\sqrt{2} \\left(i + 1\\right)}{2}\\\\v_{3}&=i\\\\v_{4}&=\\frac{\\sqrt{2} \\left(i + j\\right)}{2}\\\\v_{5}&=j\\\\v_{6}&=\\frac{\\sqrt{2} \\left(j + k\\right)}{2}\\\\v_{7}&=k\\\\v_{8}&=\\sqrt{2} k\\end{align}"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(HTML(r'\\begin{align}'\n",
" + r'\\\\'.join(['v_{{{}}}&={}'.format(n, v_string(vs[n])) for n in range(1, 8+1)])\n",
" + r'\\end{align}'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculate the Gram matrix."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}1 & 0 & \\frac{1}{2} & 0 & \\frac{1}{2} & 0 & \\frac{1}{2} & 0\\\\0 & \\frac{1}{2} & 0 & \\frac{1}{4} & 0 & 0 & 0 & 0\\\\\\frac{1}{2} & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\0 & \\frac{1}{4} & 0 & \\frac{1}{2} & 0 & \\frac{1}{4} & 0 & 0\\\\\\frac{1}{2} & 0 & 0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & \\frac{1}{4} & 0 & \\frac{1}{2} & 0 & \\frac{1}{2}\\\\\\frac{1}{2} & 0 & 0 & 0 & 0 & 0 & 1 & 0\\\\0 & 0 & 0 & 0 & 0 & \\frac{1}{2} & 0 & 1\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ 1 0 1/2 0 1/2 0 1/2 0 ⎤\n",
"⎢ ⎥\n",
"⎢ 0 1/2 0 1/4 0 0 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢1/2 0 1 0 0 0 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢ 0 1/4 0 1/2 0 1/4 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢1/2 0 0 0 1 0 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢ 0 0 0 1/4 0 1/2 0 1/2⎥\n",
"⎢ ⎥\n",
"⎢1/2 0 0 0 0 0 1 0 ⎥\n",
"⎢ ⎥\n",
"⎣ 0 0 0 0 0 1/2 0 1 ⎦"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bad_gram_matrix = sy.Matrix([[sy.simplify((vs[m].T @ vs[n])[0])\n",
" for n in range(1, 8+1)]\n",
" for m in range(1, 8+1)])\n",
"bad_gram_matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I think the inner product JCB gives in his post is not the same inner product as David Harden is using in his MathOverflow question ."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{align}\n",
" \\mathrm{QN}\\left(a+b\\sqrt{2}+(c+d\\sqrt{2})i+(e+f\\sqrt{2})j+(g+h\\sqrt{2})k\\right)\n",
" &=\n",
" a^2+2b^2+2ab\\sqrt{2}+c^2+2d^2+2cd\\sqrt{2}\n",
" \\\\\n",
" &\n",
" +e^2+2f^2+2ef\\sqrt{2}+g^2+2h^2+2gh\\sqrt{2}\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def QN(v):\n",
" return sy.Matrix([sum([v[n]**2 for n in [0, 2, 4, 6]])\n",
" + 2*sum([v[n]**2 for n in [1, 3, 5, 7]]),\n",
" sum([2*v[n]*v[n+1] for n in [0, 2, 4, 6]])])\n",
"\n",
"def EN(u):\n",
" return sum(u)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAzCAYAAACT1fi+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB10lEQVRYCe1Y0U0DMQy9QwxQwQbHBgUm4NgA2ABGADEBKhsURqAbwAZVu0HZgIoNjvdOcRRSx8nP/cVSGtvxe+e4iXtq2zTNDONAhmH4PXAqjrZtVTxDdxhDNJYgbkoGcJ8Rllz0jcR9CUlJDPgeSHxE5imkmBi1nGPsrJqGCR6HRqw7knf49xgXGF0ck7JNYtSUJ+OWYDzkEdOceokUl6KELIypxL4atRS1FL4CXjGvNKNwlT8wsZmzV1A28G0xr3HlX0eP8pElBnjsFQrWdNVz7MtTS1FL4SvglclORfZKMwX0hoVL5QfzGcYCV/3b+dQpSwzSDZAvIFqRATYbEhvRtUVulgJgvuDNhJTE0PkSw4csaafEJAaInY0tMpY1HL3LPl4b7Rxxjyi+t8XCrClcVyVJbGUTMJ0E+j81SYwoAUl2IVB2wS9SFYtYBUTO08j2pkUsWfngQJHd8FyrkiR2x4ogbbviS16SJLFL4wtz5/Rwkoy5rkqOmD/98rMfEpzD2Aa7CtdG3SQG8A1Rexy9G0G6Y3gH+1582pztFQAxu2cQSkkuYV/hodqN9M/IErvtPnlEoWKWopBDDavEviyTlUJORRe3Sevw+7SgxDi45LpP80fIH1Q64kfq5c59AAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}1\\\\0\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1⎤\n",
"⎢ ⎥\n",
"⎣0⎦"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"QN(vs[1])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAOCAYAAAD9lDaoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAwklEQVQoFX2RAQ3CMBBFV4KABQmbgwUJSEADOGAakDANSAAL4AAkAA7Ke8AtJVm45PV2v//ark055yql1FRV1YOxhDv0zF0UDA0HzQH1HjKs1IwD1GGIjPaQMFlo/zFS26zezBhOcKPjSZ6KejxHbBMZ9xUoWSzEMjPZaYDdP5OrDNGY3k6UCO5s8Bt9G5oHHwPDxqI0WM8dDAxrUlsavi/xOTiTHnTv1iVoO6gTg89yBO+rjAVFR1OreAZ/d4qzK78AklqqwgMCg74AAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle 2$"
],
"text/plain": [
"2"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EN(QN(vs[1] + vs[1])) - EN(QN(vs[1])) - EN(QN(vs[1]))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"def inner_prod(x, y):\n",
" return EN(QN(x + y)) - EN(QN(x)) - EN(QN(y))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}2 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\\\1 & 2 & 1 & 1 & 0 & 0 & 0 & 0\\\\1 & 1 & 2 & 1 & 0 & 0 & 0 & 0\\\\1 & 1 & 1 & 2 & 1 & 1 & 0 & 0\\\\1 & 0 & 0 & 1 & 2 & 1 & 0 & 0\\\\1 & 0 & 0 & 1 & 1 & 2 & 1 & 2\\\\1 & 0 & 0 & 0 & 0 & 1 & 2 & 2\\\\1 & 0 & 0 & 0 & 0 & 2 & 2 & 4\\end{matrix}\\right]$"
],
"text/plain": [
"⎡2 1 1 1 1 1 1 1⎤\n",
"⎢ ⎥\n",
"⎢1 2 1 1 0 0 0 0⎥\n",
"⎢ ⎥\n",
"⎢1 1 2 1 0 0 0 0⎥\n",
"⎢ ⎥\n",
"⎢1 1 1 2 1 1 0 0⎥\n",
"⎢ ⎥\n",
"⎢1 0 0 1 2 1 0 0⎥\n",
"⎢ ⎥\n",
"⎢1 0 0 1 1 2 1 2⎥\n",
"⎢ ⎥\n",
"⎢1 0 0 0 0 1 2 2⎥\n",
"⎢ ⎥\n",
"⎣1 0 0 0 0 2 2 4⎦"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"good_gram_matrix = sy.Matrix([[sy.simplify(inner_prod(vs[m], vs[n]))\n",
" for n in range(1, 8+1)]\n",
" for m in range(1, 8+1)])\n",
"good_gram_matrix"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2} & 0 & \\frac{1}{2} & 0 & \\frac{1}{2} & 0 & \\frac{1}{2} & 0\\\\0 & \\frac{1}{2} & 0 & \\frac{1}{2} & 0 & 0 & 0 & 0\\\\0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & \\frac{1}{2} & 0 & \\frac{1}{2} & 0 & 0\\\\0 & 0 & 0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & \\frac{1}{2} & 0 & \\frac{1}{2}\\\\0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1/2 0 1/2 0 1/2 0 1/2 0 ⎤\n",
"⎢ ⎥\n",
"⎢ 0 1/2 0 1/2 0 0 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢ 0 0 1 0 0 0 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢ 0 0 0 1/2 0 1/2 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢ 0 0 0 0 1 0 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢ 0 0 0 0 0 1/2 0 1/2⎥\n",
"⎢ ⎥\n",
"⎢ 0 0 0 0 0 0 1 0 ⎥\n",
"⎢ ⎥\n",
"⎣ 0 0 0 0 0 0 0 1 ⎦"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gen_matrix = sy.Matrix([vs[n].T for n in range(1, 8+1)])\n",
"gen_matrix"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABUAAAArCAYAAACXZ8NLAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABqklEQVRIDe2W/U3DMBDFE8QAFSOUDWg3ADZAMEFXADEBgg0qJkBlA7pBRTdoNyjtBuH3XF9Ukia2K+UvctKr4/t4ts/21VlRFFkMsiy7AiswCPmf49QoeZ4PML6DHzAGQxCW0Khmh+kRFCA407PwsOkePWl6zkIRfU5DGUq3d5LTXNewTbj/M+yqAbr7atdgCRbEvtHWJEhai4hQdLL8njQi84ku/zynOelqv1KJ+ZR7f6NOSFogpJNzWntLUT/1EFMNHVEvd02Twu+1YvvAX3WW87Qv0iq+IpqCb6nB0TcT+iHQ6+9GsT5esauybx/WYmx9iGHXoFPzV4t8CaarLV8eTcKS77ApPdeHPpDdHvZTN+qZ4B0kjbkWedJM8dcsl34zH/jegEswY6A5rZNoUoi0mSZjSJ6sg20LJug+nY6PP29+lEc3Cr1ItSuE1GJ0arbykS06pzhbHvW/XxWdCA2qt0E8qZwRERq5U1R+dIZPItWMmsStInr5nkVX082mwjqir6PmTkASqQ+as9Plvfen4h7SiQ1UVn6M0Q8xT2ppuIDshQH3xYTOL/pbQ6lRd5hNAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\frac{1}{16}$"
],
"text/plain": [
"1/16"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gen_matrix.det()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"David Harden indicates that it's the Gram matrix that needs to have determinant 1:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAYAAAASVl2WAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAWUlEQVQYGWP4//8/AwwzMDAYAfFdIBaAibEwMjIKAAVmA/E7IDYBYiUgRgCYShANBGVADGLATWACieIDowogoUMwHBhBQQyMj9VA9aA4AcUFiL4HxOeA+DQAT1cpCApe64MAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle 1$"
],
"text/plain": [
"1"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"good_gram_matrix.det()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:root] *",
"language": "python",
"name": "conda-root-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}