{ "cells": [ { "cell_type": "markdown", "id": "8ebd0216", "metadata": {}, "source": [ "# Utilities" ] }, { "cell_type": "markdown", "id": "b22eb2a9", "metadata": {}, "source": [ "Define \\chern command in latex $\\newcommand{\\chern}{\\operatorname{ch}}$" ] }, { "cell_type": "code", "execution_count": 1, "id": "b87a49bc", "metadata": {}, "outputs": [], "source": [ "# Requires extra package:\n", "#! sage -pip install \"pseudowalls==0.0.3\" --extra-index-url https://gitlab.com/api/v4/projects/43962374/packages/pypi/simple\n", "%display latex\n", "\n", "from pseudowalls import *\n", "\n", "Δ = lambda v: v.Q_tilt()\n", "alpha = stability.Tilt().alpha\n", "beta = stability.Tilt().beta\n", "\n", "def beta_minus(v):\n", " solutions = solve(\n", " stability.Tilt(alpha=0).degree(v)==0,\n", " beta)\n", " return min(map(lambda s: s.rhs(), solutions))\n", "\n", "class Object(object):\n", " pass" ] }, { "cell_type": "markdown", "id": "6d374a2a", "metadata": {}, "source": [ "Fix a Chern character $v$ with positive rank and $\\originalDelta(v) \\geq 0$" ] }, { "cell_type": "code", "execution_count": 2, "id": "ab162897", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = R \\\\ \\mathrm{ch}_{1} = C \\ell^{1} \\\\ \\mathrm{ch}_{2} = D \\ell^{2} \\end{array}\\)</html>" ], "text/latex": [ "$\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = R \\\\ \\mathrm{ch}_{1} = C \\ell^{1} \\\\ \\mathrm{ch}_{2} = D \\ell^{2} \\end{array}$" ], "text/plain": [ "<pseudowalls.chern_character.Chern_Char object at 0x7f1bd72a2010>" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = Chern_Char(*var(\"R C D\", domain=\"real\"))\n", "v" ] }, { "cell_type": "markdown", "id": "06d8357b", "metadata": {}, "source": [ "Let $u$ be a semistabilizer fitting problem 1 or 2 (destabilizing $v$ going down $\\Theta_v^{-}$)" ] }, { "cell_type": "code", "execution_count": 3, "id": "0d33d7e1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = r \\\\ \\mathrm{ch}_{1} = c \\ell^{1} \\\\ \\mathrm{ch}_{2} = d \\ell^{2} \\end{array}\\)</html>" ], "text/latex": [ "$\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = r \\\\ \\mathrm{ch}_{1} = c \\ell^{1} \\\\ \\mathrm{ch}_{2} = d \\ell^{2} \\end{array}$" ], "text/plain": [ "<pseudowalls.chern_character.Chern_Char object at 0x7f1bccb53110>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u = Chern_Char(*var(\"r c d\", domain=\"real\"))\n", "u" ] }, { "cell_type": "markdown", "id": "cb9c11e7", "metadata": {}, "source": [ "# Bounds on $\\operatorname{ch}_2(u)=d$" ] }, { "cell_type": "code", "execution_count": 4, "id": "23d48b0b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle q\\)</html>" ], "text/latex": [ "$\\displaystyle q$" ], "text/plain": [ "q" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var(\"q\", domain=\"real\") # Symbol for q=\\chern_1^{\\beta}(u)" ] }, { "cell_type": "markdown", "id": "377c2843", "metadata": {}, "source": [ "Express $c$ in terms of $q:=\\chern_1^{\\beta}(u)$" ] }, { "cell_type": "code", "execution_count": 5, "id": "49be9bb7", "metadata": {}, "outputs": [], "source": [ "c_in_terms_of_q = solve(q == u.twist(beta).ch[1], c)[0]\n", "assert c_in_terms_of_q.lhs() == c, \"Meant to be an expression for c\"" ] }, { "cell_type": "code", "execution_count": 6, "id": "4cacebc7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle c = \\beta r + q\\)</html>" ], "text/latex": [ "$\\displaystyle c = \\beta r + q$" ], "text/plain": [ "c == beta*r + q" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c_in_terms_of_q" ] }, { "cell_type": "markdown", "id": "760b306b", "metadata": {}, "source": [ "## $\\chern_2^{P}(u) > 0$" ] }, { "cell_type": "markdown", "id": "1f866f7f", "metadata": {}, "source": [ "For problem 2, this amounts to $\\chern_2^{\\beta}(u) > 0$" ] }, { "cell_type": "code", "execution_count": 7, "id": "b9bb6e1e", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle d > \\frac{1}{2} \\, \\beta^{2} r + \\beta q\\)</html>" ], "text/latex": [ "$\\displaystyle d > \\frac{1}{2} \\, \\beta^{2} r + \\beta q$" ], "text/plain": [ "d > 1/2*beta^2*r + beta*q" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "positive_radius_condition_with_q = (\n", " (\n", " (0 > - u.twist(beta).ch[2])\n", " + d # rearrange for d\n", " )\n", " .subs(solve(q == u.twist(beta).ch[1], c)[0]) # express c in term of q\n", " .expand()\n", ")\n", "positive_radius_condition_with_q" ] }, { "cell_type": "markdown", "id": "392671ee", "metadata": {}, "source": [ "Separate out the terms of the corresponding lower bound on $d$:" ] }, { "cell_type": "code", "execution_count": 8, "id": "78a1301a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\left(\\frac{1}{2} \\, \\beta^{2} r, \\beta q, 0\\right)\\)</html>" ], "text/latex": [ "$\\displaystyle \\left(\\frac{1}{2} \\, \\beta^{2} r, \\beta q, 0\\right)$" ], "text/plain": [ "(1/2*beta^2*r, beta*q, 0)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "positive_radius_lowerbound_terms = Object()\n", "\n", "positive_radius_lowerbound_terms.const = positive_radius_condition_with_q.rhs().subs(r==0)\n", "\n", "positive_radius_lowerbound_terms.linear = (\n", " positive_radius_condition_with_q.rhs()\n", " - positive_radius_lowerbound_terms.const\n", ")\n", "\n", "positive_radius_lowerbound_terms.hyperbolic = 0\n", "\n", "(positive_radius_lowerbound_terms.linear,\n", " positive_radius_lowerbound_terms.const,\n", " positive_radius_lowerbound_terms.hyperbolic)" ] }, { "cell_type": "markdown", "id": "900f332b", "metadata": {}, "source": [ "## $\\Delta(u) \\geq 0$" ] }, { "cell_type": "markdown", "id": "62529298", "metadata": {}, "source": [ "Express this inequality in terms of $q$" ] }, { "cell_type": "code", "execution_count": 9, "id": "5991acb3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle 0 \\leq {\\left(\\beta r + q\\right)}^{2} - 2 \\, d r\\)</html>" ], "text/latex": [ "$\\displaystyle 0 \\leq {\\left(\\beta r + q\\right)}^{2} - 2 \\, d r$" ], "text/plain": [ "0 <= (beta*r + q)^2 - 2*d*r" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bgmlv2_with_q = ((0 <= Δ(u))\n", " .subs(c_in_terms_of_q))\n", "\n", "bgmlv2_with_q" ] }, { "cell_type": "markdown", "id": "723511fa", "metadata": {}, "source": [ "Rearrange expression for $d$" ] }, { "cell_type": "code", "execution_count": 10, "id": "1f66d604", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle d \\leq \\frac{{\\left(\\beta r + q\\right)}^{2}}{2 \\, r}\\)</html>" ], "text/latex": [ "$\\displaystyle d \\leq \\frac{{\\left(\\beta r + q\\right)}^{2}}{2 \\, r}$" ], "text/plain": [ "d <= 1/2*(beta*r + q)^2/r" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bgmlv2_d_ineq = (bgmlv2_with_q\n", " + 2*d*r # move d to rhs\n", ") / (2*r) # scale-out d coefficient (r>0)\n", "\n", "assert bgmlv2_d_ineq.lhs() == d, \"Should be ineq for d\"\n", "\n", "bgmlv2_d_ineq" ] }, { "cell_type": "markdown", "id": "425bcb7c", "metadata": {}, "source": [ "Keep hold of the upper bound for $d$:" ] }, { "cell_type": "code", "execution_count": 11, "id": "6ae4f2e7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\frac{1}{2} \\, \\beta^{2} r + \\beta q + \\frac{q^{2}}{2 \\, r}\\)</html>" ], "text/latex": [ "$\\displaystyle \\frac{1}{2} \\, \\beta^{2} r + \\beta q + \\frac{q^{2}}{2 \\, r}$" ], "text/plain": [ "1/2*beta^2*r + beta*q + 1/2*q^2/r" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bgmlv2_d_upperbound = bgmlv2_d_ineq.rhs().expand()\n", "bgmlv2_d_upperbound" ] }, { "cell_type": "markdown", "id": "988aaf5b", "metadata": {}, "source": [ "Separate out the terms of this lower bound for d" ] }, { "cell_type": "code", "execution_count": 12, "id": "653a3340", "metadata": {}, "outputs": [], "source": [ "bgmlv2_d_upperbound_terms = Object()\n", "\n", "bgmlv2_d_upperbound_without_hyp = (\n", " bgmlv2_d_upperbound\n", " .subs(1/r == 0)\n", ")\n", "\n", "bgmlv2_d_upperbound_terms.const = (\n", " bgmlv2_d_upperbound_without_hyp\n", " .subs(r==0)\n", ")\n", "\n", "bgmlv2_d_upperbound_terms.linear = (\n", " bgmlv2_d_upperbound_without_hyp\n", " - bgmlv2_d_upperbound_terms.const\n", ").expand()\n", "\n", "bgmlv2_d_upperbound_terms.hyperbolic = (\n", " bgmlv2_d_upperbound\n", " - bgmlv2_d_upperbound_without_hyp\n", ").expand()" ] }, { "cell_type": "code", "execution_count": 13, "id": "326bb656", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\left(\\frac{1}{2} \\, \\beta^{2} r, \\beta q, \\frac{q^{2}}{2 \\, r}\\right)\\)</html>" ], "text/latex": [ "$\\displaystyle \\left(\\frac{1}{2} \\, \\beta^{2} r, \\beta q, \\frac{q^{2}}{2 \\, r}\\right)$" ], "text/plain": [ "(1/2*beta^2*r, beta*q, 1/2*q^2/r)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(bgmlv2_d_upperbound_terms.linear,\n", " bgmlv2_d_upperbound_terms.const,\n", " bgmlv2_d_upperbound_terms.hyperbolic)" ] }, { "cell_type": "markdown", "id": "5cc08c62", "metadata": {}, "source": [ "Sanity check:" ] }, { "cell_type": "code", "execution_count": 14, "id": "7ff937ff", "metadata": {}, "outputs": [], "source": [ "assert ( bgmlv2_d_upperbound\n", "- bgmlv2_d_upperbound_terms.const\n", "- bgmlv2_d_upperbound_terms.linear\n", "- bgmlv2_d_upperbound_terms.hyperbolic) == 0, \"Error in terms separation\"" ] }, { "cell_type": "markdown", "id": "024e8c41", "metadata": {}, "source": [ "## $\\Delta(v-u) \\geq 0$" ] }, { "cell_type": "markdown", "id": "a2647f43", "metadata": {}, "source": [ "Express this inequality in terms of $q$" ] }, { "cell_type": "code", "execution_count": 15, "id": "87544e6e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle 0 \\leq {\\left(\\beta r - C + q\\right)}^{2} - 2 \\, {\\left(D - d\\right)} {\\left(R - r\\right)}\\)</html>" ], "text/latex": [ "$\\displaystyle 0 \\leq {\\left(\\beta r - C + q\\right)}^{2} - 2 \\, {\\left(D - d\\right)} {\\left(R - r\\right)}$" ], "text/plain": [ "0 <= (beta*r - C + q)^2 - 2*(D - d)*(R - r)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bgmlv3_with_q = ((0 <= Δ(v-u))\n", " .subs(c_in_terms_of_q)\n", ")\n", "\n", "bgmlv3_with_q" ] }, { "cell_type": "markdown", "id": "d36504bb", "metadata": {}, "source": [ "Rearrange in terms of $d$ assuming $r>R$" ] }, { "cell_type": "code", "execution_count": 16, "id": "8986af54", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle d \\leq D - \\frac{{\\left(\\beta r - C + q\\right)}^{2}}{2 \\, {\\left(R - r\\right)}}\\)</html>" ], "text/latex": [ "$\\displaystyle d \\leq D - \\frac{{\\left(\\beta r - C + q\\right)}^{2}}{2 \\, {\\left(R - r\\right)}}$" ], "text/plain": [ "d <= D - 1/2*(beta*r - C + q)^2/(R - r)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bgmlv3_d_ineq = (\n", " (\n", " bgmlv3_with_q\n", " + 2*(D-d)*(R-r) # move d term to lhs\n", " )/2/(r-R) # assume r>R\n", ") + D\n", "\n", "assert bgmlv3_d_ineq.lhs() == d, \"Should be bound for d\"\n", "assert not bgmlv3_d_ineq.rhs().has(d), \"Should be bound for d\"\n", "\n", "bgmlv3_d_ineq" ] }, { "cell_type": "markdown", "id": "e7eb0057", "metadata": {}, "source": [ "$\\renewcommand{\\psi}{\\chern_1^{\\beta}(v)}$\n", "$\\renewcommand{\\phi}{\\chern_2^{\\beta}(v)}$\n", "Redefine psi and phi in latex to be $\\psi$ and $\\phi$" ] }, { "cell_type": "code", "execution_count": 17, "id": "0acd0b7e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\left(\\psi, \\phi\\right)\\)</html>" ], "text/latex": [ "$\\displaystyle \\left(\\psi, \\phi\\right)$" ], "text/plain": [ "(psi, phi)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ch1bv, ch2bv = var(\"psi phi\", domain=\"real\") # symbol to represent ch_1^\\beta(v) and\n", "# ch_2^\\beta(v)\n", "ch1bv, ch2bv" ] }, { "cell_type": "markdown", "id": "0d880757", "metadata": {}, "source": [ "Define expression for the different terms of this bound of $d$ in terms of $\\phi$ and $\\psi$" ] }, { "cell_type": "code", "execution_count": 18, "id": "f122a6d5", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\frac{1}{2} \\, \\beta^{2} r + \\beta q + \\phi - \\frac{{\\left(\\psi - q\\right)}^{2}}{2 \\, {\\left(R - r\\right)}}\\)</html>" ], "text/latex": [ "$\\displaystyle \\frac{1}{2} \\, \\beta^{2} r + \\beta q + \\phi - \\frac{{\\left(\\psi - q\\right)}^{2}}{2 \\, {\\left(R - r\\right)}}$" ], "text/plain": [ "1/2*beta^2*r + beta*q + phi - 1/2*(psi - q)^2/(R - r)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bgmlv3_d_upperbound_terms = Object()\n", "\n", "bgmlv3_d_upperbound_terms.linear = bgmlv2_d_upperbound_terms.linear\n", "bgmlv3_d_upperbound_terms.const = ch2bv + bgmlv2_d_upperbound_terms.const\n", "bgmlv3_d_upperbound_terms.hyperbolic = (ch1bv - q)^2/2/(r-R)\n", "\n", "(bgmlv3_d_upperbound_terms.linear\n", " + bgmlv3_d_upperbound_terms.const\n", " + bgmlv3_d_upperbound_terms.hyperbolic)" ] }, { "cell_type": "markdown", "id": "9e813c96", "metadata": {}, "source": [ "Verify that the expression above indeed is equal the upper bound on $d$ given by $\\originalDelta(v-u) \\geq 0$" ] }, { "cell_type": "code", "execution_count": 19, "id": "10fb65aa", "metadata": {}, "outputs": [], "source": [ "assert (\n", " (bgmlv3_d_upperbound_terms.linear\n", " + bgmlv3_d_upperbound_terms.const\n", " + bgmlv3_d_upperbound_terms.hyperbolic\n", " - bgmlv3_d_ineq.rhs())\n", " .subs(ch2bv == v.twist(beta).ch[2])\n", " .subs(ch1bv == v.twist(beta).ch[1])\n", ") == 0, \"Sanity check\"" ] }, { "cell_type": "markdown", "id": "a777246a", "metadata": {}, "source": [ "# Specialize to problem 2" ] }, { "cell_type": "markdown", "id": "9413516f", "metadata": {}, "source": [ "Add extra attributes to the bound objects above with a specialization to the case $\\chern_2^{\\beta}(v)=0$" ] }, { "cell_type": "code", "execution_count": 20, "id": "dbc8e7a0", "metadata": {}, "outputs": [], "source": [ "for bound_terms in [\n", " positive_radius_lowerbound_terms,\n", " bgmlv2_d_upperbound_terms,\n", " bgmlv3_d_upperbound_terms\n", "]:\n", " bound_terms.problem2 = Object()\n", " bound_terms.problem2.const = bound_terms.const.subs(ch2bv == 0)\n", " bound_terms.problem2.linear = bound_terms.linear.subs(ch2bv == 0)\n", " bound_terms.problem2.hyperbolic = bound_terms.hyperbolic.subs(ch2bv == 0)" ] }, { "cell_type": "markdown", "id": "95c39f2b", "metadata": {}, "source": [ "View the specialized bounds:" ] }, { "cell_type": "code", "execution_count": 21, "id": "2e9a7cdc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html>\\(\\displaystyle \\beta q \\verb| |\\verb|+| \\frac{1}{2} \\, \\beta^{2} r \\verb| |\\verb|+| 0\\)</html>" ], "text/latex": [ "$\\displaystyle \\beta q \\verb| |\\verb|+| \\frac{1}{2} \\, \\beta^{2} r \\verb| |\\verb|+| 0$" ], "text/plain": [ "beta*q ' + ' 1/2*beta^2*r ' + ' 0" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<html>\\(\\displaystyle \\beta q \\verb| |\\verb|+| \\frac{1}{2} \\, \\beta^{2} r \\verb| |\\verb|+| \\frac{q^{2}}{2 \\, r}\\)</html>" ], "text/latex": [ "$\\displaystyle \\beta q \\verb| |\\verb|+| \\frac{1}{2} \\, \\beta^{2} r \\verb| |\\verb|+| \\frac{q^{2}}{2 \\, r}$" ], "text/plain": [ "beta*q ' + ' 1/2*beta^2*r ' + ' 1/2*q^2/r" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<html>\\(\\displaystyle \\beta q \\verb| |\\verb|+| \\frac{1}{2} \\, \\beta^{2} r \\verb| |\\verb|+| -\\frac{{\\left(\\psi - q\\right)}^{2}}{2 \\, {\\left(R - r\\right)}}\\)</html>" ], "text/latex": [ "$\\displaystyle \\beta q \\verb| |\\verb|+| \\frac{1}{2} \\, \\beta^{2} r \\verb| |\\verb|+| -\\frac{{\\left(\\psi - q\\right)}^{2}}{2 \\, {\\left(R - r\\right)}}$" ], "text/plain": [ "beta*q ' + ' 1/2*beta^2*r ' + ' -1/2*(psi - q)^2/(R - r)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for bound_terms in [\n", " positive_radius_lowerbound_terms,\n", " bgmlv2_d_upperbound_terms,\n", " bgmlv3_d_upperbound_terms\n", "]:\n", " pretty_print(bound_terms.problem2.const,\n", " \" + \",bound_terms.problem2.linear,\n", " \" + \",bound_terms.problem2.hyperbolic)" ] }, { "cell_type": "markdown", "id": "2997ec1a", "metadata": {}, "source": [ "## Plots for all Bounds on $d$" ] }, { "cell_type": "code", "execution_count": 22, "id": "d7235dc3", "metadata": {}, "outputs": [], "source": [ "v_example = Chern_Char(3,2,-2)\n", "q_example = 7/3\n", "\n", "def plot_d_bound(\n", " v_example,\n", " q_example,\n", " ymax=5,\n", " ymin=-2,\n", " xmax=20,\n", " aspect_ratio=None):\n", "\n", " # Equations to plot imminently representing the bounds on d:\n", " eq2 = (bgmlv2_d_upperbound\n", " .subs(R == v_example.ch[0])\n", " .subs(C == v_example.ch[1])\n", " .subs(D == v_example.ch[2])\n", " .subs(beta = beta_minus(v_example))\n", " .subs(q == q_example)\n", " )\n", "\n", " eq3 = (bgmlv3_d_upperbound\n", " .subs(R == v_example.ch[0])\n", " .subs(C == v_example.ch[1])\n", " .subs(D == v_example.ch[2])\n", " .subs(beta = beta_minus(v_example))\n", " .subs(q == q_example)\n", " )\n", "\n", " eq4 = (positive_radius_condition.rhs()\n", " .subs(q == q_example)\n", " .subs(beta = beta_minus(v_example))\n", " )\n", "\n", " example_bounds_on_d_plot = (\n", " plot(\n", " eq3,\n", " (r,v_example.ch[0],xmax),\n", " color='green',\n", " linestyle = \"dashed\",\n", " legend_label=r\"upper bound: $\\Delta(v-u) \\geq 0$\",\n", " )\n", " + plot(\n", " eq2,\n", " (r,0,xmax),\n", " color='blue',\n", " linestyle = \"dashed\",\n", " legend_label=r\"upper bound: $\\Delta(u) \\geq 0$\"\n", " )\n", " + plot(\n", " eq4,\n", " (r,0,xmax),\n", " color='orange',\n", " linestyle = \"dotted\",\n", " legend_label=r\"lower bound: $\\mathrm{ch}_2^{\\beta_{-}}(u)>0$\"\n", " )\n", " )\n", " example_bounds_on_d_plot.ymin(ymin)\n", " example_bounds_on_d_plot.ymax(ymax)\n", " example_bounds_on_d_plot.axes_labels(['$r$', '$d$'])\n", " if aspect_ratio:\n", " example_bounds_on_d_plot.set_aspect_ratio(aspect_ratio)\n", " return example_bounds_on_d_plot" ] }, { "cell_type": "markdown", "id": "683ac3f7", "metadata": {}, "source": [ "### Bounds on $d$ with Minimal $q=\\operatorname{ch}^{\\beta}_1(u)$" ] }, { "cell_type": "code", "execution_count": 23, "id": "f5b1d9bf", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'bgmlv3_d_upperbound' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[23], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m bounds_on_d_qmin \u001b[38;5;241m=\u001b[39m \u001b[43mplot_d_bound\u001b[49m\u001b[43m(\u001b[49m\u001b[43mv_example\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mymin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43mRealNumber\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m0.5\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2\u001b[0m bounds_on_d_qmin\n", "Cell \u001b[0;32mIn[22], line 21\u001b[0m, in \u001b[0;36mplot_d_bound\u001b[0;34m(v_example, q_example, ymax, ymin, xmax, aspect_ratio)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mplot_d_bound\u001b[39m(\n\u001b[1;32m 5\u001b[0m v_example,\n\u001b[1;32m 6\u001b[0m q_example,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 11\u001b[0m \n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# Equations to plot imminently representing the bounds on d:\u001b[39;00m\n\u001b[1;32m 13\u001b[0m eq2 \u001b[38;5;241m=\u001b[39m (bgmlv2_d_upperbound\n\u001b[1;32m 14\u001b[0m \u001b[38;5;241m.\u001b[39msubs(R \u001b[38;5;241m==\u001b[39m v_example\u001b[38;5;241m.\u001b[39mch[Integer(\u001b[38;5;241m0\u001b[39m)])\n\u001b[1;32m 15\u001b[0m \u001b[38;5;241m.\u001b[39msubs(C \u001b[38;5;241m==\u001b[39m v_example\u001b[38;5;241m.\u001b[39mch[Integer(\u001b[38;5;241m1\u001b[39m)])\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;241m.\u001b[39msubs(q \u001b[38;5;241m==\u001b[39m q_example)\n\u001b[1;32m 19\u001b[0m )\n\u001b[0;32m---> 21\u001b[0m eq3 \u001b[38;5;241m=\u001b[39m (\u001b[43mbgmlv3_d_upperbound\u001b[49m\n\u001b[1;32m 22\u001b[0m \u001b[38;5;241m.\u001b[39msubs(R \u001b[38;5;241m==\u001b[39m v_example\u001b[38;5;241m.\u001b[39mch[Integer(\u001b[38;5;241m0\u001b[39m)])\n\u001b[1;32m 23\u001b[0m \u001b[38;5;241m.\u001b[39msubs(C \u001b[38;5;241m==\u001b[39m v_example\u001b[38;5;241m.\u001b[39mch[Integer(\u001b[38;5;241m1\u001b[39m)])\n\u001b[1;32m 24\u001b[0m \u001b[38;5;241m.\u001b[39msubs(D \u001b[38;5;241m==\u001b[39m v_example\u001b[38;5;241m.\u001b[39mch[Integer(\u001b[38;5;241m2\u001b[39m)])\n\u001b[1;32m 25\u001b[0m \u001b[38;5;241m.\u001b[39msubs(beta \u001b[38;5;241m=\u001b[39m beta_minus(v_example))\n\u001b[1;32m 26\u001b[0m \u001b[38;5;241m.\u001b[39msubs(q \u001b[38;5;241m==\u001b[39m q_example)\n\u001b[1;32m 27\u001b[0m )\n\u001b[1;32m 29\u001b[0m eq4 \u001b[38;5;241m=\u001b[39m (positive_radius_condition\u001b[38;5;241m.\u001b[39mrhs()\n\u001b[1;32m 30\u001b[0m \u001b[38;5;241m.\u001b[39msubs(q \u001b[38;5;241m==\u001b[39m q_example)\n\u001b[1;32m 31\u001b[0m \u001b[38;5;241m.\u001b[39msubs(beta \u001b[38;5;241m=\u001b[39m beta_minus(v_example))\n\u001b[1;32m 32\u001b[0m )\n\u001b[1;32m 34\u001b[0m example_bounds_on_d_plot \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 35\u001b[0m plot(\n\u001b[1;32m 36\u001b[0m eq3,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 55\u001b[0m )\n\u001b[1;32m 56\u001b[0m )\n", "\u001b[0;31mNameError\u001b[0m: name 'bgmlv3_d_upperbound' is not defined" ] } ], "source": [ "bounds_on_d_qmin = plot_d_bound(v_example, 0, ymin=-0.5)\n", "bounds_on_d_qmin" ] }, { "cell_type": "markdown", "id": "24dd62c1", "metadata": {}, "source": [ "### Bounds on $d$ with Maximal $q=\\operatorname{ch}^{\\beta}_1(u)$" ] }, { "cell_type": "code", "execution_count": null, "id": "47b30d7e", "metadata": {}, "outputs": [], "source": [ "bounds_on_d_qmax = plot_d_bound(v_example, 4, ymin=-3, ymax=3)\n", "bounds_on_d_qmax" ] }, { "cell_type": "markdown", "id": "133ccbe7", "metadata": {}, "source": [ "### Bounds on $d$ with Mid-way $q=\\operatorname{ch}^{\\beta}_1(u)$" ] }, { "cell_type": "code", "execution_count": null, "id": "25e4850b", "metadata": {}, "outputs": [], "source": [ "typical_bounds_on_d = plot_d_bound(v_example, 2, ymax=4, ymin=-2, aspect_ratio=1)\n", "typical_bounds_on_d" ] }, { "cell_type": "markdown", "id": "1c6f5622", "metadata": {}, "source": [ "# Bounds on Semistabilizer Rank $r=\\operatorname{ch}_0(u)$" ] }, { "cell_type": "code", "execution_count": null, "id": "553bba31", "metadata": {}, "outputs": [], "source": [ "var(\"a_v b_q n\") # Define symbols introduce for values of beta and q\n", "beta_value_expr = (beta == a_v/n)\n", "q_value_expr = (q == b_q/n)\n", "# RENDERED TO LATEX: positive_radius_condition.subs([q_value_expr,beta_value_expr]).factor()\n", "# placeholder for the specific values of k (start with 1):\n", "var(\"kappa\", domain=\"real\")\n", "\n", "assymptote_gap_condition1 = (kappa/(2*n^2) < bgmlv2_d_upperbound_exp_term)\n", "assymptote_gap_condition2 = (kappa/(2*n^2) < bgmlv3_d_upperbound_exp_term_alt2)\n", "\n", "r_upper_bound1 = (\n", " assymptote_gap_condition1\n", " * r * 2*n^2 / kappa\n", ")\n", "\n", "assert r_upper_bound1.lhs() == r\n", "\n", "r_upper_bound2 = (\n", " assymptote_gap_condition2\n", " * (r-R) * 2*n^2 / kappa + R\n", ")\n", "\n", "assert r_upper_bound2.lhs() == r" ] }, { "cell_type": "code", "execution_count": null, "id": "990a2840", "metadata": {}, "outputs": [], "source": [ "r_upper_bound1.subs(kappa==1).rhs()" ] }, { "cell_type": "code", "execution_count": null, "id": "5a3c7037", "metadata": {}, "outputs": [], "source": [ "r_upper_bound2.subs(kappa==1).rhs()" ] }, { "cell_type": "code", "execution_count": null, "id": "82add957", "metadata": {}, "outputs": [], "source": [ "var(\"epsilon\")\n", "var(\"chbv\") # symbol to represent \\chern_1^{\\beta}(v)\n", "\n", "# Tightness conditions:\n", "\n", "bounds_too_tight_condition1 = (\n", " bgmlv2_d_upperbound_exp_term\n", " < epsilon\n", ")\n", "\n", "bounds_too_tight_condition2 = (\n", " bgmlv3_d_upperbound_exp_term_alt.subs(chbv==0)\n", " < epsilon\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "d33e3459", "metadata": {}, "outputs": [], "source": [ "bgmlv2_d_upperbound_exp_term" ] }, { "cell_type": "code", "execution_count": null, "id": "3728c192", "metadata": {}, "outputs": [], "source": [ "bgmlv3_d_upperbound_exp_term_alt2" ] }, { "cell_type": "code", "execution_count": null, "id": "90149eb2", "metadata": {}, "outputs": [], "source": [ "var(\"Delta nu\", domain=\"real\")\n", "# Delta to represent bogomolov(v)\n", "\n", "q_sol = solve(\n", " r_upper_bound1.subs(kappa==1).rhs()\n", " == r_upper_bound2.subs(kappa==1).rhs()\n", " , q\n", ")[0].rhs()\n", "\n", "r_upper_bound_all_q = (r_upper_bound1.rhs()\n", " .expand()\n", " .subs(q==q_sol)\n", " .subs(kappa==1)\n", " .subs(psi**2 == Delta/nu^2)\n", " .subs(1/psi**2 == nu^2/Delta)\n", ")" ] }, { "cell_type": "markdown", "id": "818e07fc", "metadata": {}, "source": [ "$\\let\\originalDelta\\Delta$\n", "$\\renewcommand\\Delta{\\originalDelta(v)}$\n", "Redefine \\Delta in latex to be $\\Delta$" ] }, { "cell_type": "code", "execution_count": null, "id": "8b0b0bf4", "metadata": {}, "outputs": [], "source": [ "r_upper_bound_all_q.expand()" ] }, { "cell_type": "code", "execution_count": null, "id": "53bd2a9c", "metadata": {}, "outputs": [], "source": [ "r_upper_bound1.subs(kappa==1).rhs()" ] }, { "cell_type": "code", "execution_count": null, "id": "cfa6e1af", "metadata": {}, "outputs": [], "source": [ "r_upper_bound2.subs(kappa==1).rhs()" ] }, { "cell_type": "code", "execution_count": null, "id": "801a348a", "metadata": {}, "outputs": [], "source": [ "q_sol.expand()" ] }, { "cell_type": "code", "execution_count": null, "id": "d4bf7486", "metadata": {}, "outputs": [], "source": [ "r_upper_bound_all_q.expand().subs([nu==1,Delta==psi^2])" ] }, { "cell_type": "code", "execution_count": null, "id": "896d26dd", "metadata": {}, "outputs": [], "source": [ "c_in_terms_of_q.subs([q_value_expr,beta_value_expr])" ] }, { "cell_type": "code", "execution_count": null, "id": "51f22f7d", "metadata": {}, "outputs": [], "source": [ "rhs_numerator = (positive_radius_condition\n", " .rhs()\n", " .subs([q_value_expr,beta_value_expr])\n", " .factor()\n", " .numerator()\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "8148f5cd", "metadata": {}, "outputs": [], "source": [ "(positive_radius_condition\n", " .subs([q_value_expr,beta_value_expr])\n", " .factor())" ] }, { "cell_type": "code", "execution_count": null, "id": "af5315c8", "metadata": {}, "outputs": [], "source": [ "var(\"delta\", domain=\"real\") # placeholder symbol to be replaced by k_{q,i}" ] }, { "cell_type": "code", "execution_count": null, "id": "e3e75309", "metadata": {}, "outputs": [], "source": [ "r_upper_bound1.rhs()" ] }, { "cell_type": "code", "execution_count": null, "id": "203b216b", "metadata": {}, "outputs": [], "source": [ "r_upper_bound2.rhs()" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.8", "language": "sage", "name": "sagemath" }, "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.11.3" } }, "nbformat": 4, "nbformat_minor": 5 }