{ "cells": [ { "cell_type": "code", "execution_count": 58, "id": "8da761d0-fd03-4ff1-930f-50b766950884", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "Graphics object consisting of 16 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\\(\\displaystyle \\left(\\begin{array}{rrr}\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1\n", "\\end{array}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\begin{array}{rrr}\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1\n", "\\end{array}\\right)$" ], "text/plain": [ "[1 1 1]\n", "[1 1 1]\n", "[1 1 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Intersection matrix of T-invariant divisors in P2\n", "points = [\n", " (0, 0), (1, 0), (0, 1)\n", "]\n", "P2 = LatticePolytope(points)\n", "show(P.plot3d())\n", "P2_fan = NormalFan(P2)\n", "P2_var = ToricVariety(P2_fan)\n", "show( plot(P2_var) )\n", "\n", "A = P2_var.Chow_group(QQ)\n", "Ma = matrix([ [ \n", " A(P2_var.divisor(i))\n", " .intersection_with_divisor(P2_var.divisor(j))\n", " .count_points() \n", " for i in range(0,3) ] for j in range(0,3) ]\n", ")\n", "show(Ma)" ] }, { "cell_type": "code", "execution_count": 21, "id": "560450fe-f789-4525-8716-3d3ae79d939d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points = [\n", " (-2, 0, 0), (-1, 0, 0), (0, 0, 0), (1, 0, 0), (2, 0, 0),\n", " (-1, 1, 0), (0, 1, 0), (1, 1, 0),\n", " (0, 2, 0),\n", " (0, 0, 2)\n", "]\n", "P = LatticePolytope(points)\n", "P.plot3d()" ] }, { "cell_type": "code", "execution_count": 22, "id": "ab97d18d-68e2-48f0-b35b-7eb0de4c1f3d", "metadata": { "scrolled": true }, "outputs": [ { "ename": "MIPSolverException", "evalue": "PPL : There is no feasible solution", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mMIPSolverException\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[22], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mlattice_polytope\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpositive_integer_relations\u001b[49m\u001b[43m(\u001b[49m\u001b[43mP\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpoints\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcolumn_matrix\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m \n", "File \u001b[0;32m/usr/lib/python3.11/site-packages/sage/geometry/lattice_polytope.py:5731\u001b[0m, in \u001b[0;36mpositive_integer_relations\u001b[0;34m(points)\u001b[0m\n\u001b[1;32m 5729\u001b[0m c \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m*\u001b[39m (n \u001b[38;5;241m+\u001b[39m i) \u001b[38;5;241m+\u001b[39m [\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m+\u001b[39m [\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m*\u001b[39m (n_nonpivots \u001b[38;5;241m-\u001b[39m i \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 5730\u001b[0m MIP\u001b[38;5;241m.\u001b[39mset_objective(\u001b[38;5;28msum\u001b[39m(ci \u001b[38;5;241m*\u001b[39m w[i] \u001b[38;5;28;01mfor\u001b[39;00m i, ci \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(c)))\n\u001b[0;32m-> 5731\u001b[0m \u001b[43mMIP\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msolve\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5732\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(MIP\u001b[38;5;241m.\u001b[39mget_values(w)\u001b[38;5;241m.\u001b[39mvalues())[:n]\n\u001b[1;32m 5733\u001b[0m v \u001b[38;5;241m=\u001b[39m relations\u001b[38;5;241m.\u001b[39mlinear_combination_of_rows(x)\n", "File \u001b[0;32m/usr/lib/python3.11/site-packages/sage/numerical/mip.pyx:2655\u001b[0m, in \u001b[0;36msage.numerical.mip.MixedIntegerLinearProgram.solve (build/cythonized/sage/numerical/mip.c:16952)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2653\u001b[0m if log is not None:\n\u001b[1;32m 2654\u001b[0m self._backend.set_verbosity(log)\n\u001b[0;32m-> 2655\u001b[0m self._backend.solve()\n\u001b[1;32m 2656\u001b[0m return self._backend.get_objective_value()\n\u001b[1;32m 2657\u001b[0m \n", "File \u001b[0;32m/usr/lib/python3.11/site-packages/sage/numerical/backends/ppl_backend.pyx:726\u001b[0m, in \u001b[0;36msage.numerical.backends.ppl_backend.PPLBackend.solve (build/cythonized/sage/numerical/backends/ppl_backend.c:10571)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 724\u001b[0m raise MIPSolverException(\"PPL : Solution is unbounded\")\n\u001b[1;32m 725\u001b[0m elif ans['status'] == 'unfeasible':\n\u001b[0;32m--> 726\u001b[0m raise MIPSolverException(\"PPL : There is no feasible solution\")\n\u001b[1;32m 727\u001b[0m \n\u001b[1;32m 728\u001b[0m return 0\n", "\u001b[0;31mMIPSolverException\u001b[0m: PPL : There is no feasible solution" ] } ], "source": [ "lattice_polytope.positive_integer_relations(P.points().column_matrix()) " ] }, { "cell_type": "code", "execution_count": 59, "id": "bd9633fb-66a8-4d95-abbe-3c5e8be907ea", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(\\left(0,\\,0\\right)_{M}, \\left(1,\\,0\\right)_{M}, \\left(0,\\,1\\right)_{M}\\right)_{M}\\)" ], "text/latex": [ "$\\displaystyle \\left(\\left(0,\\,0\\right)_{M}, \\left(1,\\,0\\right)_{M}, \\left(0,\\,1\\right)_{M}\\right)_{M}$" ], "text/plain": [ "M(0, 0),\n", "M(1, 0),\n", "M(0, 1)\n", "in 2-d lattice M" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P.points()" ] }, { "cell_type": "code", "execution_count": 60, "id": "10b468cc-efbe-4deb-9444-bd9a5fc25fbd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\\(\\displaystyle \\left(\\begin{array}{rrrrrrrrr}\n", "1 & 0 & 0 & 0 & 0 & 0 & 0 & -2 & 2 \\\\\n", "0 & 1 & 0 & 0 & 0 & 0 & 0 & 2 & -2 \\\\\n", "0 & 0 & 1 & 0 & 0 & 0 & 0 & -2 & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 & 0 & 0 & -1 & 1 \\\\\n", "0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -1 \\\\\n", "0 & 0 & 0 & 0 & 0 & 0 & 1 & -2 & 1\n", "\\end{array}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\begin{array}{rrrrrrrrr}\n", "1 & 0 & 0 & 0 & 0 & 0 & 0 & -2 & 2 \\\\\n", "0 & 1 & 0 & 0 & 0 & 0 & 0 & 2 & -2 \\\\\n", "0 & 0 & 1 & 0 & 0 & 0 & 0 & -2 & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 & 0 & 0 & -1 & 1 \\\\\n", "0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & -1 \\\\\n", "0 & 0 & 0 & 0 & 0 & 0 & 1 & -2 & 1\n", "\\end{array}\\right)$" ], "text/plain": [ "[ 1 0 0 0 0 0 0 -2 2]\n", "[ 0 1 0 0 0 0 0 2 -2]\n", "[ 0 0 1 0 0 0 0 -2 0]\n", "[ 0 0 0 1 0 0 0 -1 1]\n", "[ 0 0 0 0 1 0 0 0 0]\n", "[ 0 0 0 0 0 1 0 1 -1]\n", "[ 0 0 0 0 0 0 1 -2 1]" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points = [\n", " (-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0),\n", " (-1, 1), (0, 1), (1, 1),\n", " (0, 2)\n", "]\n", "P = LatticePolytope(points)\n", "show(P.plot3d())\n", "\n", "P.points().matrix().kernel().echelonized_basis_matrix()" ] }, { "cell_type": "code", "execution_count": 61, "id": "af24c84b-5842-4773-a35a-f03939e61299", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\\(\\displaystyle \\left(\\left(-1,\\,0\\right)_{M}, \\left(1,\\,0\\right)_{M}, \\left(0,\\,1\\right)_{M}, \\left(0,\\,0\\right)_{M}\\right)_{M}\\)" ], "text/latex": [ "$\\displaystyle \\left(\\left(-1,\\,0\\right)_{M}, \\left(1,\\,0\\right)_{M}, \\left(0,\\,1\\right)_{M}, \\left(0,\\,0\\right)_{M}\\right)_{M}$" ], "text/plain": [ "M(-1, 0),\n", "M( 1, 0),\n", "M( 0, 1),\n", "M( 0, 0)\n", "in 2-d lattice M" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\\(\\displaystyle \\left(\\begin{array}{rrrr}\n", "1 & 1 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1\n", "\\end{array}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\begin{array}{rrrr}\n", "1 & 1 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1\n", "\\end{array}\\right)$" ], "text/plain": [ "[1 1 0 0]\n", "[0 0 0 1]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points = [\n", " (-1, 0), (0, 0), (1, 0),\n", " (0, 1)\n", "]\n", "P = LatticePolytope(points)\n", "show(P.plot3d())\n", "show(P.points())\n", "P.points().matrix().kernel().echelonized_basis_matrix()" ] }, { "cell_type": "code", "execution_count": 29, "id": "473f6b32-e90f-4dcf-80eb-70d2468ce742", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(\\begin{array}{rrr}\n", "\\frac{2}{3} & 1 & \\frac{1}{3} \\\\\n", "1 & \\frac{3}{2} & \\frac{1}{2} \\\\\n", "\\frac{1}{3} & \\frac{1}{2} & \\frac{1}{6}\n", "\\end{array}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\begin{array}{rrr}\n", "\\frac{2}{3} & 1 & \\frac{1}{3} \\\\\n", "1 & \\frac{3}{2} & \\frac{1}{2} \\\\\n", "\\frac{1}{3} & \\frac{1}{2} & \\frac{1}{6}\n", "\\end{array}\\right)$" ], "text/plain": [ "[2/3 1 1/3]\n", "[ 1 3/2 1/2]\n", "[1/3 1/2 1/6]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\\(\\displaystyle \\left(\\begin{array}{rrr}\n", "\\frac{2}{3} & 1 & \\frac{1}{3} \\\\\n", "1 & \\frac{3}{2} & \\frac{1}{2} \\\\\n", "\\frac{1}{3} & \\frac{1}{2} & \\frac{1}{6}\n", "\\end{array}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\begin{array}{rrr}\n", "\\frac{2}{3} & 1 & \\frac{1}{3} \\\\\n", "1 & \\frac{3}{2} & \\frac{1}{2} \\\\\n", "\\frac{1}{3} & \\frac{1}{2} & \\frac{1}{6}\n", "\\end{array}\\right)$" ], "text/plain": [ "[2/3 1 1/3]\n", "[ 1 3/2 1/2]\n", "[1/3 1/2 1/6]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "P2_123 = toric_varieties.P2_123()\n", "HH = P2_123.cohomology_ring()\n", "D = [ HH(c) for c in P2_123.fan(dim=1) ]\n", "show( )\n", "\n", "A = P2_123.Chow_group(QQ)\n", "show( matrix([ [ A(P2_123.divisor(i))\n", " .intersection_with_divisor(P2_123.divisor(j))\n", " .count_points() for i in range(0,3) ] for j in range(0,3) ])\n", " )" ] }, { "cell_type": "code", "execution_count": 35, "id": "9c198e23-29f0-4110-9361-4ad26e73f6a7", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Graphics object consisting of 16 graphics primitives" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fan1 = NormalFan(P)\n", "Xs = ToricVariety(fan1)\n", "plot(Xs)" ] }, { "cell_type": "code", "execution_count": 62, "id": "7b42b522-5b89-47f0-8c0c-f537e9ba3d61", "metadata": {}, "outputs": [], "source": [ "# HH = Xs.cohomology_ring()\n", "# D = [ HH(c) for c in Xs.fan(dim=1) ]\n", "# M = matrix([ [ Xs.integrate(D[i]*D[j]) for i in range(0,3) ] for j in range(0,3) ])\n", "\n", "# show(HH)\n", "# show(D)\n", "# show(M)" ] }, { "cell_type": "code", "execution_count": 64, "id": "ea489800-e239-489a-a07e-842a60bab7b9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(\\begin{array}{rrr}\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1\n", "\\end{array}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\begin{array}{rrr}\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1\n", "\\end{array}\\right)$" ], "text/plain": [ "[1 1 1]\n", "[1 1 1]\n", "[1 1 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = Xs.Chow_group(QQ)\n", "Ma = matrix([ [ A(Xs.divisor(i))\n", " .intersection_with_divisor(Xs.divisor(j))\n", " .count_points() for i in range(0,3) ] for j in range(0,3) ]\n", " )\n", "show(Ma)" ] }, { "cell_type": "code", "execution_count": 55, "id": "2549f78c-729d-40b1-aaaf-20c6eb1abf91", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\verb|QQ-Chow|\\verb| |\\verb|group|\\verb| |\\verb|of|\\verb| |\\verb|2-d|\\verb| |\\verb|toric|\\verb| |\\verb|variety|\\verb| |\\verb|covered|\\verb| |\\verb|by|\\verb| |\\verb|3|\\verb| |\\verb|affine|\\verb| |\\verb|patches|\\)" ], "text/latex": [ "$\\displaystyle \\verb|QQ-Chow|\\verb| |\\verb|group|\\verb| |\\verb|of|\\verb| |\\verb|2-d|\\verb| |\\verb|toric|\\verb| |\\verb|variety|\\verb| |\\verb|covered|\\verb| |\\verb|by|\\verb| |\\verb|3|\\verb| |\\verb|affine|\\verb| |\\verb|patches|$" ], "text/plain": [ "QQ-Chow group of 2-d toric variety covered by 3 affine patches" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\\(\\displaystyle \\left(\\begin{array}{rrr}\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1\n", "\\end{array}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\begin{array}{rrr}\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1 \\\\\n", "1 & 1 & 1\n", "\\end{array}\\right)$" ], "text/plain": [ "[1 1 1]\n", "[1 1 1]\n", "[1 1 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "8e31827f-7ed5-4efa-a64c-b139720b34e1", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 10.1", "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.5" } }, "nbformat": 4, "nbformat_minor": 5 }