diff --git a/examples.ipynb b/examples.ipynb index db3873b435b35ba61bd2012a68e82192764370da..6d16ae9beb806b0ac93463b91a5581fc91e94beb 100644 --- a/examples.ipynb +++ b/examples.ipynb @@ -1,5 +1,13 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "63724666", + "metadata": {}, + "source": [ + "# Utilities" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -30,45 +38,156 @@ " pass" ] }, + { + "cell_type": "markdown", + "id": "0b574b63", + "metadata": {}, + "source": [ + "# Define Cherns in Examples" + ] + }, + { + "cell_type": "markdown", + "id": "f1c3a606", + "metadata": {}, + "source": [ + "Define two recurring examples used to illustrate performance of the different theorems to find semistabilizer bounds:" + ] + }, { "cell_type": "code", "execution_count": 2, - "id": "77fff07c", + "id": "30d3738a", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "<html>\\(\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = 3 \\\\ \\mathrm{ch}_{1} = 2 \\ell^{1} \\\\ \\mathrm{ch}_{2} = -2 \\ell^{2} \\end{array}\\)</html>" + ], + "text/latex": [ + "$\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = 3 \\\\ \\mathrm{ch}_{1} = 2 \\ell^{1} \\\\ \\mathrm{ch}_{2} = -2 \\ell^{2} \\end{array}$" + ], + "text/plain": [ + "<pseudowalls.chern_character.Chern_Char object at 0x7f679c692150>" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "var(\"m\") # Initialize symbol for variety parameter\n", "recurring = Object()\n", "recurring.chern = Chern_Char(3, 2, -2)\n", - "recurring.b = beta_minus(recurring.chern)\n", - "recurring.twisted = recurring.chern.twist(recurring.b)\n", - "# RENDERED TO LATEX: recurring.b\n", - "# RENDERED TO LATEX: recurring.b.denominator()\n", - "# RENDERED TO LATEX: recurring.twisted.ch[1]\n", - "n = recurring.b.denominator()\n", - "m = 2\n", - "recurring.loose_bound = (\n", - " m*n^2*recurring.twisted.ch[1]^2\n", - ") / gcd(m, 2*n^2)\n", - "# RENDERED TO LATEX: loose_bound\n", + "recurring.chern" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "fe394909", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "<html>\\(\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = 29 \\\\ \\mathrm{ch}_{1} = 13 \\ell^{1} \\\\ \\mathrm{ch}_{2} = -\\frac{3}{2} \\ell^{2} \\end{array}\\)</html>" + ], + "text/latex": [ + "$\\displaystyle \\text{Chern Character:} \\\\ \\begin{array}{l} \\mathrm{ch}_{0} = 29 \\\\ \\mathrm{ch}_{1} = 13 \\ell^{1} \\\\ \\mathrm{ch}_{2} = -\\frac{3}{2} \\ell^{2} \\end{array}$" + ], + "text/plain": [ + "<pseudowalls.chern_character.Chern_Char object at 0x7f67924d6810>" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ "extravagant = Object()\n", "extravagant.chern = Chern_Char(29, 13, -3/2)\n", - "extravagant.b = beta_minus(extravagant.chern)\n", - "extravagant.twisted = extravagant.chern.twist(extravagant.b)\n", - "extravagant.actual_rmax = 49313\n", - "# RENDERED TO LATEX: extravagant.b\n", - "# RENDERED TO LATEX: extravagant.b.denominator()\n", - "# RENDERED TO LATEX: extravagant.twisted.ch[1]\n", - "n = extravagant.b.denominator()\n", - "m = 2\n", - "extravagant.loose_bound = (\n", - " m*n^2*extravagant.twisted.ch[1]^2\n", - ") / gcd(m, 2*n^2)" + "extravagant.chern" + ] + }, + { + "cell_type": "markdown", + "id": "09692ba5", + "metadata": {}, + "source": [ + "# Calculate Preliminary Quantities" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, + "id": "7576ebe4", + "metadata": {}, + "outputs": [], + "source": [ + "m = 1 # value of $\\ell^2$\n", + "\n", + "# add attributes for ...\n", + "for example in [recurring, extravagant]:\n", + " example.betaminus = beta_minus(example.chern)\n", + " example.twisted = example.chern.twist(example.betaminus)\n", + " example.n = example.betaminus.denominator()\n", + " example.bgmlv = example.chern.Q_tilt()\n", + "\n", + "# Actual maximal rank of Pseudo-Semistabilizers\n", + "# (needs to be calculated elsewhere)\n", + "recurring.actual_rmax = 25\n", + "extravagant.actual_rmax = 49313" + ] + }, + { + "cell_type": "markdown", + "id": "500abba3", + "metadata": {}, + "source": [ + "# First Loose Bound" + ] + }, + { + "cell_type": "markdown", + "id": "f3e61899", + "metadata": {}, + "source": [ + "Formula for loose bound:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "77fff07c", + "metadata": {}, + "outputs": [], + "source": [ + "def loose_bound(example):\n", + " n = example.n\n", + " twisted = example.twisted\n", + " return ( m*n^2*twisted.ch[1]^2\n", + " ) / gcd(m, 2*n^2)\n", + "\n", + "for example in [recurring, extravagant]:\n", + " example.loose_bound = loose_bound(example)" + ] + }, + { + "cell_type": "markdown", + "id": "218fa169", + "metadata": {}, + "source": [ + "Loose bounds for the two examples:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, "id": "9edbb954", "metadata": {}, "outputs": [ @@ -84,7 +203,7 @@ "144" ] }, - "execution_count": 3, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -95,7 +214,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "21b52c4d", "metadata": {}, "outputs": [ @@ -111,7 +230,7 @@ "215296" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -120,55 +239,90 @@ "extravagant.loose_bound" ] }, + { + "cell_type": "markdown", + "id": "22bc4b5f", + "metadata": {}, + "source": [ + "# Stronger Convenient Bound" + ] + }, + { + "cell_type": "markdown", + "id": "ee140573", + "metadata": {}, + "source": [ + "Use expression for bound used in main document" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "id": "712b7324", "metadata": {}, "outputs": [], "source": [ - "from plots_and_expressions import r_upper_bound_all_q, Delta, nu, n, R" + "from plots_and_expressions import \\\n", + "r_upper_bound_all_q, Delta, nu, n, R\n", + "# Delta: symbol for Δ(v)\n", + "# n: symbol for denominator for β_(v)\n", + "# R : symbol for chern_0(v)\n", + "# nu : ..." ] }, { "cell_type": "code", - "execution_count": 6, - "id": "ab9a828f", - "metadata": {}, - "outputs": [], + "execution_count": 9, + "id": "5814dd1d", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "<html>\\(\\displaystyle \\frac{{\\left(R + \\frac{\\Delta n^{2}}{\\nu^{2}}\\right)}^{2} \\nu^{2}}{4 \\, \\Delta n^{2}}\\)</html>" + ], + "text/latex": [ + "$\\displaystyle \\frac{{\\left(R + \\frac{\\Delta n^{2}}{\\nu^{2}}\\right)}^{2} \\nu^{2}}{4 \\, \\Delta n^{2}}$" + ], + "text/plain": [ + "1/4*(R + Delta*n^2/nu^2)^2*nu^2/(Delta*n^2)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "recurring.n = recurring.b.denominator()\n", - "recurring.bgmlv = recurring.chern.Q_tilt()\n", - "recurring.corrolary_bound = (\n", - " r_upper_bound_all_q.expand()\n", - " .subs(Delta==recurring.bgmlv)\n", - " .subs(nu==1) ## \\ell^2=1 on P^2\n", - " .subs(R==recurring.chern.ch[0])\n", - " .subs(n==recurring.n)\n", - ")" + "r_upper_bound_all_q" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "2965357d", + "execution_count": 10, + "id": "43aa5f56", "metadata": {}, "outputs": [], "source": [ - "extravagant.n = extravagant.b.denominator()\n", - "extravagant.bgmlv = extravagant.chern.Q_tilt()\n", - "extravagant.corrolary_bound = (r_upper_bound_all_q\n", - " .expand()\n", - " .subs(Delta==extravagant.bgmlv)\n", - " .subs(nu==1) ## \\ell^2=1 on P^2\n", - " .subs(R==extravagant.chern.ch[0])\n", - " .subs(n==extravagant.n)\n", - ")" + "def corrolary_bound(example):\n", + " return (\n", + " r_upper_bound_all_q.expand()\n", + " .subs(Delta==example.bgmlv)\n", + " .subs(nu==1)\n", + " .subs(R==example.chern.ch[0])\n", + " .subs(n==example.n)\n", + " )\n", + "\n", + "\n", + "for example in [recurring, extravagant]:\n", + " example.corrolary_bound = corrolary_bound(example)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "id": "5baed51c", "metadata": {}, "outputs": [ @@ -184,7 +338,7 @@ "53838.5009765625" ] }, - "execution_count": 8, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -195,7 +349,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "id": "fcc15f60", "metadata": {}, "outputs": [ @@ -211,7 +365,7 @@ "37.515625" ] }, - "execution_count": 9, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -220,9 +374,17 @@ "float(recurring.corrolary_bound)" ] }, + { + "cell_type": "markdown", + "id": "e678a488", + "metadata": {}, + "source": [ + "# Stronger Complicated Bounds" + ] + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "id": "ef8f09ff", "metadata": {}, "outputs": [], @@ -230,8 +392,8 @@ "import numpy as np\n", "\n", "def bound_comparisons(example):\n", - " n = example.b.denominator()\n", - " a_v = example.b.numerator()\n", + " n = example.n\n", + " a_v = example.betaminus.numerator()\n", "\n", " def theorem_bound(v_twisted, q_val, k):\n", " return int(min(\n", @@ -261,9 +423,20 @@ " return qs, theorem2_bounds, theorem3_bounds" ] }, + { + "cell_type": "markdown", + "id": "b1c51cd8", + "metadata": {}, + "source": [ + "Array content:\n", + "- First row: $q$-values\n", + "- Second row: Theorem 1 bounds on $ch_0(u)$ for u solutions to prob with $ch_1^{\\beta}=q$\n", + "- Second row: Theorem 2 bounds on $ch_0(u)$ for u solutions to prob with $ch_1^{\\beta}=q$" + ] + }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "id": "9cd102ac", "metadata": {}, "outputs": [ @@ -289,7 +462,7 @@ " [0, 0, 4, 3, 8, 25, 12, 15, 19, 6, 5, 4, 3]], dtype=object)" ] }, - "execution_count": 11, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } diff --git a/main.tex b/main.tex index 0f6fef2bd86f0311d26529625dc2502caea32b01..a2c4821cb484cc2da7eda6f8e2a84b5b93e3321a 100644 --- a/main.tex +++ b/main.tex @@ -710,9 +710,9 @@ from examples import recurring \begin{example}[$v=(3, 2\ell, -2)$ on $\PP^2$] \label{exmpl:recurring-first} Taking $\ell=c_1(\mathcal{O}(1))$ as the standard polarization on $\PP^2$, so -that $m=2$, $\beta_-=\sage{recurring.b}$, -giving $n=\sage{recurring.b.denominator()}$ and -$\chern_1^{\sage{recurring.b}}(F) = \sage{recurring.twisted.ch[1]}$. +that $m=2$, $\beta_-=\sage{recurring.betaminus}$, +giving $n=\sage{recurring.n}$ and +$\chern_1^{\sage{recurring.betaminus}}(F) = \sage{recurring.twisted.ch[1]}$. Using the above theorem \ref{thm:loose-bound-on-r}, we get that the ranks of tilt semistabilizers for $v$ are bounded above by $\sage{recurring.loose_bound}$. @@ -728,9 +728,9 @@ from examples import extravagant \begin{example}[extravagant example: $v=(29, 13\ell, -3/2)$ on $\PP^2$] \label{exmpl:extravagant-first} Taking $\ell=c_1(\mathcal{O}(1))$ as the standard polarization on $\PP^2$, so -that $m=2$, $\beta_-=\sage{extravagant.b}$, -giving $n=\sage{extravagant.b.denominator()}$ and -$\chern_1^{\sage{extravagant.b}}(F) = \sage{extravagant.twisted.ch[1]}$. +that $m=2$, $\beta_-=\sage{extravagant.betaminus}$, +giving $n=\sage{extravagant.n}$ and +$\chern_1^{\sage{extravagant.betaminus}}(F) = \sage{extravagant.twisted.ch[1]}$. Using the above theorem \ref{thm:loose-bound-on-r}, we get that the ranks of tilt semistabilizers for $v$ are bounded above by $\sage{extravagant.loose_bound}$. @@ -1338,8 +1338,8 @@ stated in the corollary. \label{exmpl:recurring-second} Just like in example \ref{exmpl:recurring-first}, take $\ell=c_1(\mathcal{O}(1))$ as the standard polarization on $\PP^2$, so -that $m=2$, $\beta=\sage{recurring.b}$, -giving $n=\sage{recurring.b.denominator()}$. +that $m=2$, $\beta=\sage{recurring.betaminus}$, +giving $n=\sage{recurring.n}$. Using the above corollary \ref{cor:direct_rmax_with_uniform_eps}, we get that the ranks of tilt semistabilizers for $v$ are bounded above by @@ -1351,8 +1351,8 @@ which is much closer to real maximum 25 than the original bound 144. \label{exmpl:extravagant-second} Just like in example \ref{exmpl:extravagant-first}, take $\ell=c_1(\mathcal{O}(1))$ as the standard polarization on $\PP^2$, so -that $m=2$, $\beta=\sage{extravagant.b}$, -giving $n=\sage{extravagant.b.denominator()}$. +that $m=2$, $\beta=\sage{extravagant.betaminus}$, +giving $n=\sage{extravagant.n}$. Using the above corollary \ref{cor:direct_rmax_with_uniform_eps}, we get that the ranks of tilt semistabilizers for $v$ are bounded above by @@ -1516,8 +1516,8 @@ $\epsilon_{v,q}\geq\epsilon_v$, with equality when $k_{v,q}=1$. Just like in examples \ref{exmpl:recurring-first} and \ref{exmpl:recurring-second}, take $\ell=c_1(\mathcal{O}(1))$ as the standard polarization on $\PP^2$, so that -$\beta=\sage{recurring.b}$, giving $n=\sage{recurring.b.denominator()}$ -and $\chern_1^{\sage{recurring.b}}(F) = \sage{recurring.twisted.ch[1]}$. +$\beta=\sage{recurring.betaminus}$, giving $n=\sage{recurring.n}$ +and $\chern_1^{\sage{recurring.betaminus}}(F) = \sage{recurring.twisted.ch[1]}$. %% TODO transcode notebook code The (non-exclusive) upper bounds for $r\coloneqq\chern_0(u)$ of a tilt semistabilizer $u$ of $v$ in terms of the possible values for $q\coloneqq\chern_1^{\beta}(u)$ are as follows: @@ -1565,8 +1565,8 @@ was 144. Just like in examples \ref{exmpl:extravagant-first} and \ref{exmpl:extravagant-second}, take $\ell=c_1(\mathcal{O}(1))$ as the standard polarization on $\PP^2$, so that -$\beta=\sage{extravagant.b}$, giving $n=\sage{n:=extravagant.b.denominator()}$ -and $\chern_1^{\sage{extravagant.b}}(F) = \sage{extravagant.twisted.ch[1]}$. +$\beta=\sage{extravagant.betaminus}$, giving $n=\sage{n:=extravagant.n}$ +and $\chern_1^{\sage{extravagant.betaminus}}(F) = \sage{extravagant.twisted.ch[1]}$. This example was chosen because the $n$ value is moderatly large, giving more possible values for $k_{v,q}$, in dfn/lemma \ref{lemdfn:epsilon_q}. This allows for a larger possible difference between the bounds given by theorems