diff --git a/Estratos.ipynb b/Estratos.ipynb new file mode 100644 index 0000000..c85b269 --- /dev/null +++ b/Estratos.ipynb @@ -0,0 +1,1022 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "id": "03414fb8-f6f5-4796-a227-6aeed863ab6c", + "metadata": {}, + "outputs": [], + "source": [ + "T. = QQ[]\n", + "S. = PolynomialRing(QQ, order='neglex')\n", + "R. = PolynomialRing(QQ, order='neglex')\n", + "f = u^2 * v^2 + u^5 + v^5\n", + "g = u^3 * v^3 + u^7 + v^7\n", + "F = z^3 - 3 * f(u=x, v=y) * z + 2 * g(u=x, v=y)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "c17bb619-1df9-4ea5-bfce-7f77cf56e00d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Ideal (z, y, x) of Multivariate Polynomial Ring in x, y, z over Rational Field]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F.jacobian_ideal().minimal_associated_primes()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f65646af-e328-430f-991d-10a0c2348fee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h = f^3 - g^2\n", + "F.discriminant(z)(x=u, y=v) - 108 * h" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "00201766-5028-41ba-a13e-4740790a538e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "65" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F.jacobian_ideal().vector_space_dimension()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "d0ebfd8e-9c6f-4dc1-8230-9f3dfcaa2b4d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "148" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h.jacobian_ideal().vector_space_dimension()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "73aaa28f-0f0f-4e2e-8c8d-7c8473336e0e", + "metadata": {}, + "outputs": [], + "source": [ + "load('/home/artal/Descargas/ZetaFunctionsNewtonND.py')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "0e83692e-907b-493a-8911-945c2925e586", + "metadata": {}, + "outputs": [], + "source": [ + "Z = ZetaFunctions(h)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "75c28fbb-c042-4afc-b79d-e60fbc149628", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(-1) * v^14,\n", + " (-1) * u^14,\n", + " (-2) * u^3 * v^10,\n", + " (-2) * v^3 * u^10,\n", + " (-1) * v^10 * (v^4 + 2*u^3),\n", + " (-1) * u^10 * (2*v^3 + u^4),\n", + " (-1) * (v + u) * u^3 * v^3 * (2*v^6 - 5*u*v^5 + 5*u^2*v^4 - 5*u^3*v^3 + 5*u^4*v^2 - 5*u^5*v + 2*u^6)]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[p.factor() for p in Z.get_polyfaces_dictionary(compact=True)]" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "9e5736a1-ba87-4f95-8dc0-0ab5b7151bbd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "35654137-b9d0-46d6-b6e3-5d6261bf8271", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "Graphics object consisting of 20 graphics primitives" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z.newton_plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "361b687b-43e1-4db8-be55-2f6a180f10f0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Facet 0: -42 + 4*v + 3*u >= 0\n", + " Facet 1: -13 + v + u >= 0\n", + " Facet 3: -42 + 3*v + 4*u >= 0\n" + ] + } + ], + "source": [ + "Z.give_info_facets(compact=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "3de0f7de-3ed6-4084-b6de-2a0fe4d95579", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-v^14 - 2*u^3*v^10 + 3*u^4*v^9 + 3*u^9*v^4 - 2*u^10*v^3 - u^14" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h1 = sum(h.monomial_coefficient(u^i * v^j) * u^i * v^j for i, j in h.exponents() if (i, j) == (14, 0) or (i, j) == (0, 14) or i + j == 13)\n", + "h1" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "6db00060-6963-4782-a837-db6dc6adadc9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "148" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h1.jacobian_ideal().vector_space_dimension()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "70044743-6a40-4234-a9fa-fa9a87064058", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-v^14 + v^15 + 3*u^2*v^12 - 2*u^3*v^10 + 3*u^4*v^9 + 3*u^5*v^10 + 4*u^7*v^7 + 3*u^9*v^4 - 2*u^10*v^3 + 3*u^10*v^5 + 3*u^12*v^2 - u^14 + u^15" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "2a533b35-964e-4615-ad76-1afd397797b2", + "metadata": {}, + "outputs": [], + "source": [ + "def estrato(ff, chi, pesos):\n", + " Z1 = ZetaFunctions(ff)\n", + " zetamon1 = Z1.monodromy_zeta().value()^chi\n", + " zetatop1 = chi * Z1.topological_zeta(local=True, weights=pesos).value()\n", + " return zetamon1, zetatop1" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "id": "effb40ba-8e60-43a1-8d89-ed8cee03ff1d", + "metadata": {}, + "outputs": [], + "source": [ + "zetatop=0\n", + "zetamon=1" + ] + }, + { + "cell_type": "markdown", + "id": "df0f6a80-d6c0-4b16-8306-4f5c81545a31", + "metadata": {}, + "source": [ + "$\\check{E}_1$" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "id": "8b9a319a-2351-425a-8476-c083a125e393", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t + 1)^14 * (t^2 - t + 1)^7 * (t^6 - t^5 + t^4 - t^3 + t^2 - t + 1)^7,\n", + " (s + 9/14) * (s + 1))" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon1, zetatop1 = estrato(z^3 + x^2 * z^2 + x^7, -7, [2, 1, 1])\n", + "zetamon *= zetamon1\n", + "zetatop += zetatop1\n", + "zetamon1.factor(), zetatop1.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "922c65e0-f073-4c4c-a5ba-953a4f997c07", + "metadata": {}, + "source": [ + "${E}_1\\cap E_{4,i}$" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "id": "a5c32283-70d6-4903-bc3f-e248d46dbb48", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^2 * (t^2 + t + 1)^2, (s + 9/14) * (s + 2/3) * (s + 1))" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon14, zetatop14 = estrato(z^3 + x^2 * y^7 * z^2 + x^7 * y^21, 2, [2, 7, 1])\n", + "zetamon *= zetamon14\n", + "zetatop += zetatop14\n", + "zetamon14.factor(), zetatop14.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "08c192da-a9d5-4bc6-b834-c2ff504d6b5c", + "metadata": {}, + "source": [ + "${E}_1\\cap\\Delta$" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "id": "20bba556-4db2-4c7a-ac3d-8641ece608d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t + 1)^-7 * (t^2 - t + 1)^-7, (s + 9/14) * (s + 1))" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon1d, zetatop1d = estrato(z^3 + x^2 * z^2 + x^7 * y, 7, [2, 1, 1])\n", + "zetamon *= zetamon1d\n", + "zetatop += zetatop1d\n", + "zetamon1d.factor(), zetatop1d.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "id": "1ec7e8f6-859f-4145-a86f-7a911923a478", + "metadata": {}, + "outputs": [], + "source": [ + "zetamone1= zetamon1*zetamon14*zetamon1d\n", + "zetatope1= zetatop1 + zetatop14 + zetatop1d" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "id": "319eeaf1-bc5a-474d-95b3-78de7f894c5c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^2 * (t + 1)^7 * (t^2 + t + 1)^2 * (t^6 - t^5 + t^4 - t^3 + t^2 - t + 1)^7,\n", + " (s + 9/14) * (s + 2/3) * (s + 1))" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamone1.factor(), zetatope1.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "ae8fc0d1-552a-414a-914a-421964737158", + "metadata": {}, + "source": [ + "$\\check{E}_{2,i}$" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "id": "34e87485-b397-435a-9d4c-978735f1e394", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^2 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^-2,\n", + " (s + 16/21) * (s + 1))" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon2, zetatop2 = estrato(z^3 + x^5 * z + x^7, 2, [3, 1, 1])\n", + "zetamon *= zetamon2\n", + "zetatop += zetatop2\n", + "zetamon2.factor(), zetatop2.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "id": "32307a2d-cb48-4ce4-8130-ddcee91a5b7e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "x^12 - x^11 + x^9 - x^8 + x^6 - x^4 + x^3 - x + 1" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cyclotomic_polynomial(21)" + ] + }, + { + "cell_type": "markdown", + "id": "50a665ae-6aab-4a09-95a8-820582d36efa", + "metadata": {}, + "source": [ + "${E}_{2,i}\\cap E_{3,i}$" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "id": "bf417692-9e86-42cb-9bab-7efcea3174cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^2 * (t^2 + t + 1)^2, (s + 29/42) * (s + 16/21) * (s + 1))" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon23, zetatop23= estrato(z^3 + x^5 * y^10 * z + x^7 * y^14, 2, [3, 5, 1])\n", + "zetamon *= zetamon23\n", + "zetatop += zetatop23\n", + "zetamon23.factor(), zetatop23.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "id": "e31a134f-9d4d-4438-abcd-a0ae6881a84f", + "metadata": {}, + "outputs": [], + "source": [ + "zetamone2= zetamon2*zetamon23\n", + "zetatope2= zetatop2 + zetatop23" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "22248c64-3b38-4779-abd4-fa532827a1ca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^4 * (t^2 + t + 1)^2 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^-2,\n", + " (s + 29/42) * (s + 1))" + ] + }, + "execution_count": 159, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamone2.factor(), zetatope2.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "bf5405fe-df5b-48c2-973d-cb79fa6e51c8", + "metadata": {}, + "source": [ + "$\\check{E}_{3,i}$" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "82e29430-e591-41fd-805e-024e718b91a4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^-2 * (t^2 - t + 1)^2 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^2 * (t^12 + t^11 - t^9 - t^8 + t^6 - t^4 - t^3 + t + 1)^2,\n", + " (s + 29/42) * (s + 1))" + ] + }, + "execution_count": 160, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon3, zetatop3 = estrato(z^3 + x^10 * z + x^14, -2, [5, 1, 1])\n", + "zetamon *= zetamon3\n", + "zetatop += zetatop3\n", + "zetamon3.factor(), zetatop3.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "id": "513c0649-9724-43ed-9f5c-e78cba17b735", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "x^12 + x^11 - x^9 - x^8 + x^6 - x^4 - x^3 + x + 1" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cyclotomic_polynomial(42)" + ] + }, + { + "cell_type": "markdown", + "id": "7f5da880-9e24-45e7-9ab1-b5d8eebaf76c", + "metadata": {}, + "source": [ + "${E}_{3,i}\\cap E_{4,i}$" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "fa3bd566-3f90-40c8-b3df-fc27e02fc3e0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^2 * (t^2 + t + 1)^2, (s + 2/3) * (s + 29/42) * (s + 1))" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon34, zetatop34 = estrato(z^3 + x^14 * y^10 * z + x^21 * y^14, 2, [7, 5, 1])\n", + "zetamon *= zetamon34\n", + "zetatop += zetatop34\n", + "zetamon34.factor(), zetatop34.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "4016536c-7dc4-417d-bb0f-496b738517a4", + "metadata": {}, + "source": [ + "${E}_{3,i}\\cap f$" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "16a5e4d8-afb2-43bc-b4bd-ba9d7824e77b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^2 * (t^2 - t + 1)^-2 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^-2 * (t^12 + t^11 - t^9 - t^8 + t^6 - t^4 - t^3 + t + 1)^-2,\n", + " (s + 29/42) * (s + 1))" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon3f, zetatop3f = estrato(z^3 + x * y^10 * z + y^14, 2, [1, 5, 1])\n", + "zetamon *= zetamon3f\n", + "zetatop += zetatop3f\n", + "zetamon3f.factor(), zetatop3f.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "5468f2df-38ec-4823-9377-31ab2bc6dc11", + "metadata": {}, + "outputs": [], + "source": [ + "zetamone23= zetamone2 * zetamon3 * zetamon34 * zetamon3f\n", + "zetatope23= zetatope2 + zetatop3 + zetatop34 + zetatop3f" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "id": "13789e6d-cbba-4fac-93cf-10551da0979a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^6 * (t^2 + t + 1)^4 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^-2,\n", + " (s + 2/3) * (s + 1))" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamone23.factor(), zetatope23.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "ccc32acb-28ef-4628-a51e-3aff997646e9", + "metadata": {}, + "source": [ + "$\\check{E}_{4,i}$" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "9efeade1-d21c-4ff9-ad19-0b67ddbbab82", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^4 * (t^2 + t + 1)^4 * (t^6 + t^5 + t^4 + t^3 + t^2 + t + 1)^8 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^8,\n", + " (s + 2/3) * (s + 1))" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon4, zetatop4 = estrato(z^3 + x^14 * z + x^21, -4, [7, 1, 1])\n", + "zetamon *= zetamon4\n", + "zetatop += zetatop4\n", + "zetamon4.factor(), zetatop4.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "a564ec00-2a96-47c8-97ff-5a5f500c626a", + "metadata": {}, + "source": [ + "${E}_{4,i}\\cap g$" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "id": "9dcde2d8-2a61-48a6-87e8-98ffb547ef16", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^-2 * (t^2 + t + 1)^-2 * (t^6 + t^5 + t^4 + t^3 + t^2 + t + 1)^-4 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^-4,\n", + " (s + 2/3) * (s + 1))" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon4g, zetatop4g = estrato(z^3 + x^14 * z + x^21 * y, 2, [7, 1, 1])\n", + "zetamon *= zetamon4g\n", + "zetatop += zetatop4g\n", + "zetamon4g.factor(), zetatop4g.denominator().factor()" + ] + }, + { + "cell_type": "markdown", + "id": "2981a168-ed29-473e-bc38-4c6864ed7b26", + "metadata": {}, + "source": [ + "${E}_4\\cap\\Delta$" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "767c1c15-0e88-492f-950a-82a54480a2eb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t^6 + t^5 + t^4 + t^3 + t^2 + t + 1)^-2 * (t^12 - t^11 + t^9 - t^8 + t^6 - t^4 + t^3 - t + 1)^-2,\n", + " (s + 2/3) * (s + 1))" + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon4d, zetatop4d = estrato(z^3 + x^7 * z^2 + x^21 * y, 2, [7, 1, 1])\n", + "zetamon *= zetamon4d\n", + "zetatop += zetatop4d\n", + "zetamon4d.factor(), zetatop4d.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "5c0f5123-59a7-4660-a298-d0aa238d5694", + "metadata": {}, + "outputs": [], + "source": [ + "zetamone4= zetamone23 * zetamon4 * zetamon4g * zetamon4d * zetamon14\n", + "zetatope4= zetatope23 + zetatop4 + zetatop4g + zetatop4d + zetatop14" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "7323db86-9f16-4ded-a39e-e377836e617e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((t - 1)^10 * (t^2 + t + 1)^8 * (t^6 + t^5 + t^4 + t^3 + t^2 + t + 1)^2,\n", + " (s + 9/14) * (s + 2/3) * (s + 1))" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamone4.factor(), zetatope4.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "id": "b1d36f9c-e580-410d-a41e-90915236f8d7", + "metadata": {}, + "outputs": [], + "source": [ + "zetamon /= (t^3 - 1)^7" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "id": "3e2c75ac-c59e-48ce-8897-b25dd1283e6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "t^66 - t^63 + 5*t^59 - 5*t^56 + 8*t^52 - 8*t^49 - 14*t^38 + 14*t^35 - 14*t^31 + 14*t^28 + 8*t^17 - 8*t^14 + 5*t^10 - 5*t^7 + t^3 - 1" + ] + }, + "execution_count": 144, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "id": "2698a314-3799-4832-a9dc-f735c14a1a4a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(s + 9/14) * (s + 2/3) * (s + 1)" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetatop.denominator().factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "id": "29a016fb-3316-49b5-9720-843637017b4f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(t - 1)^3 * (t + 1)^7 * (t^2 + t + 1) * (t^6 + t^5 + t^4 + t^3 + t^2 + t + 1)^2 * (t^6 - t^5 + t^4 - t^3 + t^2 - t + 1)^7" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon.factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "274931c8-c536-4f97-9a5d-06a596a92285", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 175, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon4 * zetamon4g^2" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "id": "dcc73bc3-9e6e-45fe-99ce-6e8b17f6b159", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetamon3 * zetamon3f" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "4afe75a2-f9f6-4690-a09b-570ba614d71e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(10/21) * (s + 2/3)^-1 * (s + 1)^-1 * (s + 6/5)" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetatope23.factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "id": "db53f3eb-871a-41d4-bb61-1cda3410c6dd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(13/21) * (s + 9/14)^-1 * (s + 2/3)^-1 * (s + 1)^-1 * (s^2 + 43/26*s + 9/13)" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zetatope4.factor()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "824c0056-d8c4-40d1-8327-4b2a0498149d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 10.3.beta8", + "language": "sage", + "name": "sagemath-devel" + }, + "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.12.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/IMG_5493.JPG b/IMG_5493.JPG new file mode 100644 index 0000000..f47aa3c Binary files /dev/null and b/IMG_5493.JPG differ diff --git a/Mult3.tex b/Mult3.tex new file mode 100644 index 0000000..4ec8e4b --- /dev/null +++ b/Mult3.tex @@ -0,0 +1,656 @@ +\documentclass[12pt]{amsart} +\usepackage[colorlinks=true,pagebackref,hyperindex,citecolor=Green,linkcolor=Blue]{hyperref} +\usepackage[top=1in, bottom=1in, left=1.1in, right=1.1in]{geometry} +%\usepackage{stmaryrd} +%\usepackage[firstpage]{draftwatermark} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{amsthm} +\usepackage[all]{xy} +\usepackage{mathrsfs} +\usepackage{enumitem} +\usepackage[T1]{fontenc} +\usepackage{color} +\usepackage{stmaryrd} +\usepackage{bigints} + +\usepackage{graphicx} %This is for inserting figures and captions +\usepackage{tikz-cd} %Easy commutative diagrams +\usepackage{tikz} %For plotting sutff, drawin figures... + + +\makeatletter +\def\namedlabel#1#2{\begingroup +#2% +\def\@currentlabel{#2}% +\phantomsection\label{#1}\endgroup +} +\makeatother + +%\begin{enumerate}[noitemsep] + + +\newcommand{\Cech}{ \check{\rm{C}}} +\DeclareMathOperator{\supp}{Supp} +% THEOREM Environments --------------------------------------------------- +\newtheorem{theorem}{Theorem}[section] +\newtheorem*{MainTheorem}{Main Theorem} +\newtheorem{hypothesis}[theorem]{Hypothesis} +\newtheorem{ThmDef}[theorem]{Theorem/Definition} +\newtheorem{corollary}[theorem]{Corollary} +\newtheorem{conjecture}[theorem]{Conjecture} +\newtheorem{lemma}[theorem]{Lemma} +\newcommand{\Fdif}[1]{{ \llbracket #1 \rrbracket }} +\newtheorem{proposition}[theorem]{Proposition} +\newtheorem{claim}[theorem]{Claim} +\newtheorem{notation}[theorem]{Notation} +\newtheorem*{convention}{Convention} +\newtheorem*{notationCounter}{Notation for Section \ref{counterex}} +\newtheorem*{notationInj}{Notation for Section \ref{Ln&id}} + +\newtheorem{theoremx}{Theorem} +\renewcommand{\thetheoremx}{\Alph{theoremx}} % "letter-numbered" theorems for Introduction + +\newtheorem{propositionx}{Proposition} +\renewcommand{\thepropositionx}{\Alph{propositionx}} % "letter-numbered" theorems for Introduction + + +\theoremstyle{definition} +\newtheorem{definition}[theorem]{Definition} +\newtheorem{question}[theorem]{Question} +\newtheorem{example}[theorem]{Example} +\theoremstyle{remark} +\newtheorem{remark}[theorem]{Remark} +\numberwithin{equation}{subsection} + +\newtheorem{questionx}[theoremx]{Question} +\renewcommand{\thequestionx}{\Alph{questionx}} % "letter-numbered" questions for Introduction + + +% MATH ------------------------------------------------------------------- + +%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%% + +% EDITING ------------------------------------------------------------------- + +% For author editorial notes +%\newcommand{\note}[2]{} + \newcommand{\note}[2]{ {\color{blue} + \vspace{2 mm} + \par \noindent + \reversemarginpar{\color{blue} \textbf{#1}} + \framebox{\begin{minipage}[c]{0.95 \textwidth} + #2\end{minipage}}\vspace{5 mm}\par}} + +% Shortcuts for colors +\newcommand{\cb}{\color {blue}} +\newcommand{\crd}{\color {red}} + +% For segues +\definecolor{blue-violet}{rgb}{0.54, 0.17, 0.89} +\definecolor{Blue}{rgb}{0.01, 0.28, 1.0} +\definecolor{gGreen}{rgb}{0.2, 0.8, 0.2} +\definecolor{Green}{rgb}{0.04, 0.85, 0.32} + +\newcommand{\seg}[1]{\textcolor{blue-violet}{#1}} + +% For red comments on typos +\renewcommand{\!}[1]{{\color{red}\text{\Huge$\star$ }#1}} + +% For double slash +%\newcommand{\sslash}{\mathbin{/\mkern-6mu/}} + + +%%%%%%%%%%%%%%%%%%%%% + +\makeatletter +\def\@tocline#1#2#3#4#5#6#7{\relax + \ifnum #1>\c@tocdepth % then omit + \else + \par \addpenalty\@secpenalty\addvspace{#2}% + \begingroup \hyphenpenalty\@M + \@ifempty{#4}{% + \@tempdima\csname r@tocindent\number#1\endcsname\relax + }{% + \@tempdima#4\relax + }% + \parindent\z@ \leftskip#3\relax \advance\leftskip\@tempdima\relax + \rightskip\@pnumwidth plus4em \parfillskip-\@pnumwidth + #5\leavevmode\hskip-\@tempdima + \ifcase #1 + \or\or \hskip 1.9em \or \hskip 2em \else \hskip 3em \fi% + #6\nobreak\relax + \dotfill\hbox to\@pnumwidth{\@tocpagenum{#7}}\par + \nobreak + \endgroup + \fi} +\makeatother + +%%%%%%%%%%%%%%%%%%%%% + +% For sets +\newcommand{\set}[1]{\left\{ #1 \right\}} +\renewcommand{\(}{\left(} +\renewcommand{\)}{\right)} +\newcommand{\NN}{\mathbb{N}} +\newcommand{\RR}{\mathbb{R}} +\newcommand{\ZZ}{\mathbb{Z}} +\newcommand{\QQ}{\mathbb{Q}} +\newcommand{\CC}{\mathbb{C}} +\newcommand{\KK}{\mathbb{K}} + +\newcommand{\dif}[1]{^{{\langle #1\rangle}}} + +\newcommand{\m}{\mathfrak{m}} +\newcommand{\n}{\mathfrak{n}} + +%%%%%%%%%%%%%%%%%%%%% + +% For fancy letter +\newcommand{\cM}{\mathscr{M}} +\newcommand{\cN}{\mathscr{N}} +\newcommand{\cA}{\mathscr{A}} +\newcommand{\cK}{K} +\newcommand{\cP}{{\mathcal P}} +\newcommand{\cR}{{\mathcal R}} +\newcommand{\cO}{{\mathcal O}} +\newcommand{\cC}{{\mathcal C}} +\newcommand{\cJ}{{\mathcal J}} +\newcommand{\ff}{\boldsymbol{f}} + +\newcommand{\cB}{\mathcal{B}} + +%%%%%%%%%%%%%%%%%%%%% +% For operators using abbreviations +\newcommand{\Spec}{\operatorname{Spec}} +\newcommand{\Hom}{\operatorname{Hom}} +\newcommand{\sdim}{\operatorname{sdim}} +\newcommand{\Ext}{\operatorname{Ext}} +\newcommand{\Frac}{\operatorname{Frac}} +\newcommand{\InjDim}{\operatorname{inj.dim}} +\newcommand{\Supp}{\operatorname{Supp}} +\newcommand{\Rank}{\operatorname{rank}} +\newcommand{\End}{\operatorname{End}} +\newcommand{\Ker}{\operatorname{Ker}} +\newcommand{\fr}{\operatorname{free.rank}} +\newcommand{\CoKer}{\operatorname{Coker}} +\newcommand{\Ass}{\operatorname{Ass}} +\newcommand{\Ht}{\operatorname{ht}} +\newcommand{\IM}{\operatorname{Im}} +\newcommand{\id}{\operatorname{id}} +\newcommand{\lct}{\operatorname{lct}} + + +\newcommand{\Min}{\operatorname{min}} +\newcommand{\fpt}{\operatorname{fpt}} +\newcommand{\gr}{\operatorname{gr}} +\newcommand{\ch}{\operatorname{char}} +\newcommand{\Der}{\operatorname{Der}} +\newcommand{\tors}{\operatorname{tors}} +\newcommand{\re}{\operatorname{re}} + +%%%%%%%%%%%%%%%%%%%%% + +% Maps +\newcommand{\FDer}[1]{\stackrel{#1}{\to}} +\newcommand{\FDerL}[1]{\stackrel{#1}{\longrightarrow }} +\newcommand{\onto}{\twoheadrightarrow} +\newcommand{\connarrow}{\ar `[d] `[l] `[llld] `[ld] [lld]} %Connecting map in LES + +%%%%%%%%%%%%%%%%%%%%% + +% Alessandro's commands +\newcommand{\ls}{\leqslant} +\newcommand{\gs}{\geqslant} +\newcommand{\ds}{\displaystyle} +\newcommand{\eee}[1]{\underline{}^e \hspace{-0.05cm}{#1}} +\newcommand{\eeep}[1]{\underline{}^{e+e'} \hspace{-0.05cm}{#1}} +\newcommand{\p}{\mathfrak{p}} +\newcommand{\q}{\mathfrak{q}} +\newcommand{\MIN}{\operatorname{Min}} +\newcommand{\ord}{\operatorname{ord}} +\newcommand{\ov}[1]{\overline{#1}} +\newcommand{\ann}{\operatorname{ann}} +\newcommand{\ck}[1]{{#1}^{\vee}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\ehk}{\operatorname{e_{HK}}} +\newcommand{\ps}[1]{\llbracket {#1} \rrbracket} +\newcommand{\cd}{\operatorname{cd}} +\newcommand{\Nash}{\operatorname{Nash}} +\renewcommand{\a}{\mathfrak{a}} +\renewcommand{\b}{{J}} +\renewcommand{\b}{{J}} +\newcommand{\OO}{\mathcal{O}} +\newcommand{\JJ}{\mathcal{J}} +%\renewcommand{\ll}{\operatorname{\ell\ell}} +\newcommand{\ctr}{N} % For a generic number of items + +%%%%%%%%%%%%%%%%%%%%% + +% Daniel's commands +\newcommand{\Pnr}{\mathcal{P}^n_R} +\newcommand{\Pn}{\mathcal{P}^n_X} +\newcommand{\OXn}{\Omega^{(n)}_{X/\KK}} +\newcommand{\OXR}{\Omega^{(n)}_{R/\KK}} +\newcommand{\Grr}{\operatorname{Grass}} +\newcommand{\Gr}{\Grr_{\binom{n+d}{d}}(\mathcal{P}^n_X)} +\newcommand{\Ox}{\mathcal O} +\newcommand{\Oxx}{{\mathcal O}_{X,x}} +\newcommand{\Su}{\KK[x^{a_1},\ldots,x^{a_s}]} +\newcommand{\Po}{\KK[x_1,\ldots,x_d]} +\newcommand{\Na}{Nash_n(X)} +\newcommand{\Nn}{\overline{\Nash_n(X)}} +\newcommand{\I}{{\mathcal I}_X} +\newcommand{\V}{\mathbf{V}} + +\newcommand{\Grade}{\operatorname{grade}} +\newcommand{\Pri}{{\mathcal P}^n_X} +\newcommand{\Prix}{{\mathcal P}^n_{\Ox_{X,x}}} +\newcommand{\Prir}{{\mathcal P}^n_{R}} +\newcommand{\Pric}{{\mathcal P}^n_{\Oc}} + + +\newcommand{\T}{\mathbb T} +\newcommand{\A}{{\mathcal A}^Tw} + + +\newcommand{\GrFan}{\operatorname{GF}} +\newcommand{\XGF}{X_{\GrFan(J_n)}} +\newcommand{\GF}{\GrFan(J_n)} +\newcommand{\Nw}{\mathcal{N}_{\sigma}(\mathcal{I})} +\newcommand{\sd}{\check{\sigma}} +\newcommand{\Si}{\mbox{Sing}} +\newcommand{\Co}{\mbox{Conv}} + +\newcommand{\sz}{\sigma_{\ZZ}} +\newcommand{\Suc}{\CC[u,u^3v^4,uv]} +\newcommand{\Suk}{\KK[u,u^3v^4,uv]} +\newcommand{\Suz}{\ZZ[u,u^3v^4,uv]} +\newcommand{\Jn}{\langle u-1,u^3v^4-1,uv-1 \rangle^{n+1}} +\newcommand{\Gn}{\mathbb{G}_n} +\newcommand{\Mn}{\mathbb{M}_n} +\newcommand{\cV}{\mathcal{V}} +\newcommand{\Gc}{\mathbb{G}_n^0} +\newcommand{\Gp}{\mathbb{G}_n^p} +\newcommand{\Pnn}{\mathcal{P}_n} +\newcommand{\Pnu}{\mathcal{P}_{n-1}} +\newcommand{\Cc}{C_{\mathbb{G}_n^{(0)}}} +\newcommand{\Cp}{C_{\mathbb{G}_n^{(p)}}} +\newcommand{\bfg}{{\bf \left(\frac{f}{g}\right)^s}} +\newcommand{\bfga}{{\bf \frac{f^s}{g^{s+\alpha}}}} +\newcommand{\bfgt}{{\bf \frac{\tilde{f}^s}{\tilde{g}^{s+\alpha}}}} +\newcommand{\bfgOne}{{\bf \frac{f^s}{g^{s+1}}}} + +\newcommand{\ga}{{\bf \frac{1}{g^{\alpha}}}} +\newcommand{\gd}{\operatorname{gl.dim}} + +\newcommand{\lm}{\operatorname{lm}} +\newcommand{\lc}{\operatorname{lc}} +\newcommand{\lt}{\operatorname{lt}} +\newcommand{\init}{\operatorname{in}} +\newcommand{\diff}{\operatorname{diff}} + + +%------------------------------------------------------- + +\begin{document} + +\title{On germs of hypersurfaces with multiplicity 3} + +\author{EAB, MGV, ELC} + +\maketitle + + +We propose the following general method to study germs of multiplicity 3 singular points of hypersurfaces. Firstly, consider an equation of the germ given by a monic polynomial $F = z^3 + a_1z + a_2z + a_3 \in \CC[[{\bf x}]][z]$ of degree 3 with respect to $z$. By means of a Tschirnhaus transformation, reduce $F$ to a monic equation $z^3 + b_2z + b_3$ that does not have terms of degree 2 with respect to $z$. Secondly, consider an embedded resolution $\pi: X \rightarrow \CC^d$ of the reduced divisor given by the product $b_2b_3$ of the coefficients of degree one and zero with respect to $z$. Consider the usual stratification of the pair $(X, (\pi \circ F)^{-1} \{F=0\})$ defined in terms of decomposition $\cup_{j \in J} E_j$ of $(\pi \circ F)^{-1} \{F=0\}$ into irreducible components. Pulling back $F$ under the map $\pi \times id$, we obtain for each stratum $E_I^\circ$ a quasi-trinomial local expression for $F$. +The local quasi-trinomial expression will be non degenerate with respect to its Newton polyhedron unless the monomials $M_1$, $M_2$ and their coefficients $c_1$ and $c_2$ satisfy a precise condition. + + +\section{The quasi-trinomial case} + + +In this section we consider the case of +$$F = z^3 + M_1(c_1+A)z + M_2(c_2 + M_2) \in \CC[[{\bf x}]][z]$$ +where $M_1={\bf x}^{m_1}$ and $M_2={\bf x}^{m_2}$ are monomials, $c_1,c_2 \in \CC^\ast$ and $A, B \in ({\bf x})\CC[[{\bf x}]]$ + +We distinguish the following two cases +\begin{itemize} + + +\item Assume that the monomials $M_1$ and $M_2$ are not related by the divisibility relation, i.e., neither $M_1 \nmid M_2$ nor $M_1 \nmid M_2$. + +In this case, the Newton polyhedra of $F$ contains a unique two dimensional compact face determined by the monomials $z^3$, $M_1z$ and $M_2$. Moreover, $F$ is non degenerate with respect to its Newton polyhedra. + +\ + + +\begin{tikzpicture} +\fill [yellow] (1,0) rectangle (3,-2); +\fill [yellow] (-2,0) rectangle (1,2); +\draw[gray, thick] (-2,-2) -- (-2,2); +\draw[gray, thick] (-2,-2) -- (3,-2); +\draw[gray, thick] (-2,0) -- (3,0); +\draw[gray, thick] (1,-2) -- (1,2); +\filldraw[black] (-2,-2) circle (2pt) node[anchor=west]{}; +\filldraw[black] (1,0) circle (2pt) node[anchor=south west]{$m_2$}; +\filldraw[black] (2,-1) circle (2pt) node[anchor=south west]{$m_1$}; + + + + + + + + + + + + +\fill [yellow] (11,0,4)--(11,0,0)--(13,0,0)--(13,0,4)--(11,0,4); +\fill [yellow] (11,0,4)--(11,0,7)--(6,0,7)--(6,0,4)--(11,0,4); + + +\draw[gray, thick] (6,0,0) -- (6,0,7); +\draw[gray, thick] (6,0,0) -- (6,4,0); +\draw[gray, thick] (6,0,0) -- (13,0,0); + + + + + +\filldraw[black] (6,0,0) circle (2pt) node[anchor=west]{}; + + +\draw[gray, thick] (6,0,4) -- (13,0,4); +\draw[gray, thick] (11,0,0) -- (11,0,7); + + + +\draw[gray, thick] (6,3,0) -- (11,0,4); +\draw[gray, thick] (9,1,6) -- (11,0,4); +\draw[gray, thick] (6,3,0) -- (9,1,6); + + +\draw[gray, dashed] (9,0,0) -- (9,0,6); +\draw[gray, dashed] (6,0,6) -- (9,0,6); +\draw[gray, dashed] (9,1,0) -- (9,1,6); +\draw[gray, dashed] (6,1,6) -- (9,1,6); +\draw[gray, dashed] (9,0,6) -- (9,1,6); + +\draw[gray, dashed] (6,1,0) -- (6,1,6); +\draw[gray, dashed] (6,1,0) -- (9,1,0); +\draw[gray, dashed] (6,0,6) -- (6,1,6); +\draw[gray, dashed] (9,0,0) -- (9,1,0); + + +\filldraw[black] (6,3,0) circle (2pt) node[anchor=south west]{$z^3$}; +\filldraw[black] (11,0,4) circle (2pt) node[anchor=north west]{$M_2$}; +\filldraw[black] (9,0,6) circle (2pt) node[anchor=north]{$M_1$}; +\filldraw[black] (9,1,6) circle (2pt) node[anchor=south west]{$M_1z$}; + + + + +\end{tikzpicture} + +\ + + + +\item Assume that the monomials $M_1$ and $M_2$ are related by the divisibility relation, i.e., either $M_1 | M_2$ or $M_1 | M_2$. In this case the Newton polyhedron of $F$ is a polygonal path. We distinguish the following cases. + + \ + + +\begin{tikzpicture} +\fill [yellow] (6,-2) rectangle (9,0); +\fill [yellow] (9,0) rectangle (11,2); +\draw[gray, thick] (6,-2) -- (6,2); +\draw[gray, thick] (6,-2) -- (11,-2); +\draw[gray, thick] (6,0) -- (11,0); +\draw[gray, thick] (9,-2) -- (9,2); +\filldraw[black] (6,-2) circle (2pt) node[anchor=west]{}; +\filldraw[black] (9,0) circle (2pt) node[anchor=north west]{$m_2$}; +\filldraw[black] (9.5, 1.3) circle (2pt) node[anchor=north west]{$m_1$}; +\end{tikzpicture} + +\ + + +\begin{enumerate} +\item If the point $3m_1$ does not belong to the set $2 m_2 + (\RR_{\geq 0})^2$, the Newton polyhedron of $F$ consists of two segments. The first one is determined by the monomials $z^3$ and $M_1z$ and the second is determined by the monomials $M_1z$ and $M_2$. it follows that $F$ is non degenerate with respect to its newton polyhedron. + + + + \ + + +\begin{tikzpicture} +\fill [yellow] (-2,-2) rectangle (1,-2/3); +\fill [yellow] (-2,-2) rectangle (0,0); +\draw[gray, thick] (-2,-2) -- (-2,2); +\draw[gray, thick] (-2,-2) -- (3,-2); +\draw[gray, thick] (-2,0) -- (3,0); +\draw[gray, thick] (1,-2) -- (1,2); + +\draw[gray, dashed] (0,-2/3) -- (0,0); +\draw[gray, dashed] (0,-2/3) -- (1,-2/3); + + + +\filldraw[black] (-2,-2) circle (2pt) node[anchor=west]{}; +\filldraw[black] (1,0) circle (2pt) node[anchor=north west]{$m_2$}; +\filldraw[black] (0, -2/3) circle (2pt) node[anchor=north west]{$\frac{2}{3}m_2$}; +\filldraw[black] (-0.5, -0.2) circle (2pt) node[anchor=north east]{$m_1$}; + + + + + +\fill [yellow] (28/3,0,4)--(28/3,0,8/3)--(11,0,8/3)--(11,0,0)--(6,0,0)--(6,0,4)--(28/3,0,4); + + + +\draw[gray, thick] (6,0,0) -- (6,0,7); +\draw[gray, thick] (6,0,0) -- (6,4,0); +\draw[gray, thick] (6,0,0) -- (13,0,0); + + + + + +\filldraw[black] (6,0,0) circle (2pt) node[anchor=west]{}; + + +\draw[gray, thick] (6,0,4) -- (13,0,4); +\draw[gray, thick] (11,0,0) -- (11,0,7); + + + +\draw[gray, thick] (8,1,3) -- (11,0,4); +\draw[gray, thick] (6,3,0) -- (8,1,3); + + +\draw[gray, dashed] (8,1,3) -- (8,0,3); +\draw[gray, dashed] (8,0,0) -- (8,0,3); +\draw[gray, dashed] (8,1,3) -- (8,1,0); +\draw[gray, dashed] (8,1,0) -- (8,0,0); +\draw[gray, dashed] (6,1,0) -- (8,1,0); + + +\draw[gray, dashed] (6,1,0) -- (6,1,3); +\draw[gray, dashed] (6,1,3) -- (8,1,3); +\draw[gray, dashed] (6,1,3) -- (6,0,3); +\draw[gray, dashed] (6,0,3) -- (8,0,3); + + + + +\draw[gray, dashed] (28/3,0,8/3) -- (28/3,0,4); +\draw[gray, dashed] (28/3,0,8/3) -- (11,0,8/3); + +\filldraw[black] (6,3,0) circle (2pt) node[anchor=south west]{$z^3$}; +\filldraw[black] (11,0,4) circle (2pt) node[anchor=north west]{$M_2$}; +\filldraw[black] (8,0,3) circle (2pt) node[anchor=north]{$M_1$}; +\filldraw[black] (8,1,3) circle (2pt) node[anchor=south west]{$M_1z$}; + + + + +\end{tikzpicture} + +\ + + + +\item If the point $3m_1$ belongs to the set $2 m_2 + (\RR_{\geq 0})^2$, the Newton polyhedron of $F$ consists of one segment with vertex corresponding to the monomials $z^3$ and $M_2$. We distinguish to further cases. + + + + + +\begin{enumerate} +\item If $M_1^3 \ne M_2^2$, the point corresponding to the monomial $M_1z$ is an interior point of the Newton polyhedron of $F$. It follows that $F$ is non degenerate with respect to its Newton polyhedron. + + + +\begin{tikzpicture} + + +\fill [yellow] (28/3,0,4)--(28/3,0,8/3)--(11,0,8/3)--(11,0,0)--(6,0,0)--(6,0,4)--(28/3,0,4); + + + +\draw[gray, thick] (6,0,0) -- (6,0,7); +\draw[gray, thick] (6,0,0) -- (6,4,0); +\draw[gray, thick] (6,0,0) -- (13,0,0); + +\filldraw[black] (6,0,0) circle (2pt) node[anchor=west]{}; + + +\draw[gray, thick] (6,0,4) -- (13,0,4); +\draw[gray, thick] (11,0,0) -- (11,0,7); + + +\draw[gray, thick] (6,3,0) -- (11,0,4); + +\draw[gray, thick] (6,3,0) -- (10.5,1,3) -- (12.75, 0, 4.5); + + +\draw[gray, thick] (6,3,0) -- (6,3,7); +\draw[gray, thick] (6,3,0) -- (13,3,0); + + +\draw[gray, dashed] (6,1,3) -- (6,0,3); +\draw[gray, dashed] (10.5,0,0) -- (10.5,0,3); +\draw[gray, dashed] (6,1,3) -- (6,1,0); +\draw[gray, dashed] (10.5,1,0) -- (10.5,0,0); +\draw[gray, dashed] (6,1,0) -- (10.5,1,0); + + +\draw[gray, dashed] (10.5,1,0) -- (10.5,1,3); +\draw[gray, dashed] (10.5,1,3) -- (6,1,3); +\draw[gray, dashed] (10.5,1,3) -- (10.5,0,3); +\draw[gray, dashed] (10.5,0,3) -- (6,0,3); + + + + +\draw[gray, dashed] (28/3,0,8/3) -- (28/3,0,4); +\draw[gray, dashed] (28/3,0,8/3) -- (11,0,8/3); + +\filldraw[black] (6,3,0) circle (2pt) node[anchor=south west]{$z^3$}; +\filldraw[black] (11,0,4) circle (2pt) node[anchor=north west]{$M_2$}; +\filldraw[black] (10.5,0,3) circle (2pt) node[anchor=north]{}; +\filldraw[black] (10.5,1,3) circle (2pt) node[anchor=south west]{$M_1z$}; +\filldraw[black] (12.75,0,4.5) circle (2pt) node[anchor=north]{}; + + + +\end{tikzpicture} + + + +\item If $M_1^3 = M_2^2$, the point corresponding to the monomial $M_1z$ lies in the unique dimensional compact face of the Newton polyhedron of $F$. The face equation is equal to +$$z^3 + c_1z + c_2.$$ +Therefore, $F$ is non degenerate with respect to its Newton polyhedron if and only if $3c_1 \ne 2c_2$. + + +\begin{tikzpicture} + + + +\fill [yellow] (28/3,0,4)--(28/3,0,8/3)--(11,0,8/3)--(11,0,0)--(6,0,0)--(6,0,4)--(28/3,0,4); + + + +\draw[gray, thick] (6,0,0) -- (6,0,7); +\draw[gray, thick] (6,0,0) -- (6,4,0); +\draw[gray, thick] (6,0,0) -- (13,0,0); + +\filldraw[black] (6,0,0) circle (2pt) node[anchor=west]{}; + + +\draw[gray, thick] (6,0,4) -- (13,0,4); +\draw[gray, thick] (11,0,0) -- (11,0,7); + + +\draw[gray, thick] (6,3,0) -- (11,0,4); + + + +\draw[gray, thick] (6,3,0) -- (6,3,7); +\draw[gray, thick] (6,3,0) -- (13,3,0); + + + +\draw[gray, dashed] (6,1,8/3) -- (6,0,8/3); + +\draw[gray, dashed] (28/3,0,0) -- (28/3,0,8/3); +\draw[gray, dashed] (6,1,8/3) -- (6,1,0); +\draw[gray, dashed] (28/3,1,0) -- (28/3,0,0); +\draw[gray, dashed] (6,1,0) -- (28/3,1,0); + + +\draw[gray, dashed] (28/3,1,0) -- (28/3,1,8/3); +\draw[gray, dashed] (28/3,1,8/3) -- (6,1,8/3); +\draw[gray, dashed] (28/3,1,8/3) -- (28/3,0,8/3); +\draw[gray, dashed] (28/3,0,8/3) -- (6,0,8/3); + + + + +\draw[gray, dashed] (28/3,0,8/3) -- (28/3,0,4); +\draw[gray, dashed] (28/3,0,8/3) -- (11,0,8/3); + +\filldraw[black] (6,3,0) circle (2pt) node[anchor=south west]{$z^3$}; +\filldraw[black] (11,0,4) circle (2pt) node[anchor=north west]{$M_2$}; +\filldraw[black] (28/3,0,8/3) circle (2pt) node[anchor=north]{}; +\filldraw[black] (28/3,1,8/3) circle (2pt) node[anchor=south west]{$M_1z$}; + + + + +\end{tikzpicture} + + +\end{enumerate} +\end{enumerate} + + + + +\end{itemize} + + + + + +\bibliographystyle{amsplain} +\bibliography{biblio} + + + +\end{document} diff --git a/Singmult3Ejem1.ipynb b/Singmult3Ejem1.ipynb new file mode 100644 index 0000000..eed404a --- /dev/null +++ b/Singmult3Ejem1.ipynb @@ -0,0 +1,1079 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e8d28f5d-556f-4e0d-9ec8-e039ca35cdf4", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "555b4804-430a-43cd-8c2e-1292899c6ea7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-1) * (t - 1) * (t + 1) * (t^4 - t^3 + t^2 - t + 1) * (t^4 + t^3 + t^2 + t + 1) * (t^6 + t^3 + 1),\n", + " (-11/90) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 - 69/11*s - 72/11),\n", + " x^5*y^2 + x^2*y^4)" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "load('../Descargas/ZetaFunctionsNewtonND.py')\n", + "R. = QQ[]\n", + "F = z^3+(y^2+x^3)*z+x^2*y^2\n", + "Z = ZetaFunctions(F)\n", + "Zmon=Z.monodromy_zeta()\n", + "Ztop=Z.topological_zeta(local = True)\n", + "g=(y^2+x^3)*x^2*y^2\n", + "Zmon, Ztop, g" + ] + }, + { + "cell_type": "markdown", + "id": "b6ea28e6-3ece-4e52-a34a-e00bdf345007", + "metadata": {}, + "source": [ + "Primera explosión ---> divisor E_1 (6,2)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "adf9be35-2eda-463f-9581-0f17b879eacb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(x^5*y + x^2,\n", + " x^3*y^3*z + x^2*y^4 + y^2*z + z^3,\n", + " y^4 + x*y^2,\n", + " x^4*y^2 + x^2*y^2*z + x^3*z + z^3)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g1=g(x=x*y)/y^6\n", + "F1=F(x=x*y)\n", + "g1b=g(y=x*y)/x^6\n", + "F1b=F(y=x*y)\n", + "g1,F1, g1b, F1b" + ] + }, + { + "cell_type": "markdown", + "id": "1f1c1819-19bc-45c7-8bec-ddd1b9380b55", + "metadata": {}, + "source": [ + "Aportación de estrato de intersección E_1 (6,2) y g_2=x2" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "fa867c2c-1819-4500-bf4b-fd29acfdeb14", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-1/2) * (s + 1)^-2 * (s - 1), (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z1 = ZetaFunctions(F1)\n", + "A1=Z1.topological_zeta(local=True, weights=[1,2,1])\n", + "M1=Z1.monodromy_zeta()\n", + "A1, M1" + ] + }, + { + "cell_type": "markdown", + "id": "cbef6f22-df04-4d42-ac7f-87917c7d2619", + "metadata": {}, + "source": [ + "Aportación de estrato abierto de E_1 (6,2)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "239b3798-b6a7-43bb-a94c-d29a366d5617", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-1/2) * (s + 1)^-2 * (s - 1), (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F1t=F1(x=x+2)\n", + "Z1t = ZetaFunctions(F1t)\n", + "A1t=Z1t.topological_zeta(local=True, weights=[1,2,1])\n", + "M1t=Z1t.monodromy_zeta()\n", + "A1t, M1t" + ] + }, + { + "cell_type": "markdown", + "id": "76776c98-c8d4-499a-a1ee-6aca1d182c21", + "metadata": {}, + "source": [ + "Segunda explosión E_2 (9,3)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "062e5987-292d-4e31-996a-db366df666b9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(x + y,\n", + " x^4*y^6 + x^3*y^3*z + x^2*y^4*z + z^3,\n", + " x*y^4 + y^2,\n", + " x^6*y^2 + x^4*y^2*z + x^3*z + z^3)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g2=g1b(x=x*y)/y^3\n", + "F2=F1b(x=x*y)\n", + "g2b=g1b(y=x*y)/x^3\n", + "F2b=F1b(y=x*y)\n", + "g2, F2, g2b, F2b" + ] + }, + { + "cell_type": "markdown", + "id": "40cd5f3c-2358-466a-9107-27b2dfe415a2", + "metadata": {}, + "source": [ + "Aportación de estrato de intersección E_2 (9,3) y g_3=y2" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "2c6a512e-4d1f-41af-936d-43065a2bef90", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/3) * (s + 1)^-2, (t^6 + t^3 + 1)^-1)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z2b = ZetaFunctions(F2b)\n", + "A2b=Z2b.topological_zeta(local=True, weights=[3,1,1])\n", + "M2b=Z2b.monodromy_zeta()\n", + "A2b, M2b" + ] + }, + { + "cell_type": "markdown", + "id": "330f44ff-7833-44c3-a4fa-0e646237ab49", + "metadata": {}, + "source": [ + "Aportación de estrato abierto de E_1 (6,2)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "8948fe24-90c2-450c-a6cc-134a2c82d080", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/3) * (s + 1)^-2, (t^6 + t^3 + 1)^-1)" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F2t=F2(x=x+3)\n", + "Z2t = ZetaFunctions(F2t)\n", + "A2t=Z2t.topological_zeta(local=True, weights=[1,3,1])\n", + "M2t=Z2t.monodromy_zeta()\n", + "A2t, M2t" + ] + }, + { + "cell_type": "markdown", + "id": "2efb4eb5-e6bd-43de-8b96-bf3bce3119f6", + "metadata": {}, + "source": [ + "Tercera explosión E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "dd7d3923-e444-4f72-8b3b-cd093db11ed5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(x + 1,\n", + " x^4*y^10 + x^3*y^6*z + x^2*y^6*z + z^3,\n", + " y + 1,\n", + " x^10*y^6 + x^6*y^4*z + x^6*y^3*z + z^3)" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g3=g2(x=x*y)/y\n", + "F3=F2(x=x*y)\n", + "g3b=g2(y=x*y)/x\n", + "F3b=F2(y=x*y)\n", + "g3, F3, g3b, F3b" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "61cd0e41-ae53-4dc2-a822-5992ab34d2e2", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (1948788351.py, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn [32], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m Aportación de intersección de E_1 (Integer(6),Integer(2)) y E_3 (Integer(16),Integer(5))\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "Aportación de intersección de E_1 (6,2) y E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "e74156ef-b808-4581-9fe5-72cd237c73c3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/30) * (s + 1)^-2 * (s + 8/9)^-1 * (s^2 + 1/3*s + 8/3),\n", + " (-1) * (t - 1) * (t^2 + t + 1))" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z13 = ZetaFunctions(F3)\n", + "A13=Z13.topological_zeta(local=True, weights=[2,5,1])\n", + "M13=Z13.monodromy_zeta()\n", + "A13, M13" + ] + }, + { + "cell_type": "markdown", + "id": "fdc916f8-9529-4a65-b3f5-ca51808d95e3", + "metadata": {}, + "source": [ + "Aportación de intersección de E_2 (9,3) y E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "699c1fd9-b59c-468d-9e17-63e6b189eb64", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/30) * (s + 1)^-2 * (s + 8/9)^-1 * (s^2 + 1/3*s + 8/3),\n", + " (-1) * (t - 1) * (t^2 + t + 1))" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z23 = ZetaFunctions(F3b)\n", + "A23=Z23.topological_zeta(local=True, weights=[5,3,1])\n", + "M23=Z23.monodromy_zeta()\n", + "A13, M23" + ] + }, + { + "cell_type": "markdown", + "id": "f8c4cef1-0d85-4dd1-9c84-1feeeebd81c7", + "metadata": {}, + "source": [ + "Aportación de estrato abierto de E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "253d9222-7bfb-463a-bca6-6aa883f9eda9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-7/45) * (s + 8/9)^-1 * (s + 1)^-1 * (s - 8/7),\n", + " (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1 * (t^6 + t^3 + 1)^-2)" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F3t=F3(x=x+3)\n", + "Z3t = ZetaFunctions(F3t)\n", + "A3t=Z3t.topological_zeta(local=True, weights=[1,5,1])\n", + "M3t=Z3t.monodromy_zeta()\n", + "A3t, M3t" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "52ccfc68-0bb7-47ee-b70c-e9e2982bc645", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-7/45) * (s + 8/9)^-1 * (s + 1)^-1 * (s - 8/7),\n", + " (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1 * (t^6 + t^3 + 1)^-2)" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F3bt=F3b(y=y+3)\n", + "Z3bt = ZetaFunctions(F3bt)\n", + "A3bt=Z3bt.topological_zeta(local=True, weights=[5,1,1])\n", + "M3bt=Z3bt.monodromy_zeta()\n", + "A3bt, M3bt" + ] + }, + { + "cell_type": "markdown", + "id": "1fd26ac5-19fd-4dad-9015-87354ac4074a", + "metadata": {}, + "source": [ + "Aportación de intersección de E_3 (16,5) y g_1" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "ed999fd8-d5fc-4f59-a1b1-a5162637d51b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/6) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 + 142/75*s + 24/25),\n", + " (t + 1) * (t - 1)^2 * (t^2 + t + 1) * (t^4 - t^3 + t^2 - t + 1) * (t^4 + t^3 + t^2 + t + 1))" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F30=F3(x=x-1)\n", + "Z30 = ZetaFunctions(F30)\n", + "A30=Z30.topological_zeta(local=True, weights=[1,5,1])\n", + "M30=Z30.monodromy_zeta()\n", + "A30, M30" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "7856f357-7f92-49c5-a87c-0684a24f93fd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/6) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 + 142/75*s + 24/25),\n", + " (t + 1) * (t - 1)^2 * (t^2 + t + 1) * (t^4 - t^3 + t^2 - t + 1) * (t^4 + t^3 + t^2 + t + 1))" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F3b0=F3b(y=y-1)\n", + "Z3b0 = ZetaFunctions(F3b0)\n", + "A3b0=Z3b0.topological_zeta(local=True, weights=[5,1,1])\n", + "M3b0=Z3b0.monodromy_zeta()\n", + "A3b0, M3b0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc98fc4f-cb55-4c1b-ab70-74da3356a3d5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2214bc22-c6f8-4cf1-b7b3-7ef60d1bf5e5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "9328b08b-cc6a-42fa-818f-c9c6b237f40b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "T. = QQ[]\n", + "A=A1+A2b+A13+A23-A3t+A30\n", + "B=(-11/90) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 - 69/11*s - 72/11)\n", + "A-B" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95641a8c-4454-45fa-8353-9278d5937ee3", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7eea46a4-1439-40de-a16c-be14ce2de2fa", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "2bb58afd", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "823aaa80", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-1) * (t - 1) * (t + 1) * (t^4 - t^3 + t^2 - t + 1) * (t^4 + t^3 + t^2 + t + 1) * (t^6 + t^3 + 1),\n", + " (-11/90) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 - 69/11*s - 72/11),\n", + " x^5*y^2 + x^2*y^4)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "load('ZetaFunctionsNewtonND.py')\n", + "R. = QQ[]\n", + "F = z^3+(y^2+x^3)*z+x^2*y^2\n", + "Z = ZetaFunctions(F)\n", + "Zmon=Z.monodromy_zeta()\n", + "Ztop=Z.topological_zeta(local = True)\n", + "g=(y^2+x^3)*x^2*y^2\n", + "Zmon, Ztop, g" + ] + }, + { + "cell_type": "markdown", + "id": "70c3cf27", + "metadata": {}, + "source": [ + "Primera explosión ---> divisor E_1 (6,2)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "b68f383a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(x^5*y + x^2,\n", + " x^3*y^3*z + x^2*y^4 + y^2*z + z^3,\n", + " y^4 + x*y^2,\n", + " x^4*y^2 + x^2*y^2*z + x^3*z + z^3)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g1=g(x=x*y)/y^6\n", + "F1=F(x=x*y)\n", + "g1b=g(y=x*y)/x^6\n", + "F1b=F(y=x*y)\n", + "g1,F1, g1b, F1b" + ] + }, + { + "cell_type": "markdown", + "id": "aacd2b71", + "metadata": {}, + "source": [ + "Aportación de estrato de intersección E_1 (6,2) y g_2=x2" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "80675fc5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-1/2) * (s + 1)^-2 * (s - 1), (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z1 = ZetaFunctions(F1)\n", + "A1=Z1.topological_zeta(local=True, weights=[1,2,1])\n", + "M1=Z1.monodromy_zeta()\n", + "A1, M1" + ] + }, + { + "cell_type": "markdown", + "id": "724f3e35", + "metadata": {}, + "source": [ + "Aportación de estrato abierto de E_1 (6,2)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "c78f4bf8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-1/2) * (s + 1)^-2 * (s - 1), (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F1t=F1(x=x+2)\n", + "Z1t = ZetaFunctions(F1t)\n", + "A1t=Z1t.topological_zeta(local=True, weights=[1,2,1])\n", + "M1t=Z1t.monodromy_zeta()\n", + "A1t, M1t" + ] + }, + { + "cell_type": "markdown", + "id": "d5b62001", + "metadata": {}, + "source": [ + "Segunda explosión E_2 (9,3)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "5918cb49", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(x + y,\n", + " x^4*y^6 + x^3*y^3*z + x^2*y^4*z + z^3,\n", + " x*y^4 + y^2,\n", + " x^6*y^2 + x^4*y^2*z + x^3*z + z^3)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g2=g1b(x=x*y)/y^3\n", + "F2=F1b(x=x*y)\n", + "g2b=g1b(y=x*y)/x^3\n", + "F2b=F1b(y=x*y)\n", + "g2, F2, g2b, F2b" + ] + }, + { + "cell_type": "markdown", + "id": "d60dcc57", + "metadata": {}, + "source": [ + "Aportación de estrato de intersección E_2 (9,3) y g_3=y2" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "7c5fb9eb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/3) * (s + 1)^-2, (t^6 + t^3 + 1)^-1)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z2b = ZetaFunctions(F2b)\n", + "A2b=Z2b.topological_zeta(local=True, weights=[3,1,1])\n", + "M2b=Z2b.monodromy_zeta()\n", + "A2b, M2b" + ] + }, + { + "cell_type": "markdown", + "id": "4a56a110", + "metadata": {}, + "source": [ + "Aportación de estrato abierto de E_1 (6,2)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "4079d302", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/3) * (s + 1)^-2, (t^6 + t^3 + 1)^-1)" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F2t=F2(x=x+3)\n", + "Z2t = ZetaFunctions(F2t)\n", + "A2t=Z2t.topological_zeta(local=True, weights=[1,3,1])\n", + "M2t=Z2t.monodromy_zeta()\n", + "A2t, M2t" + ] + }, + { + "cell_type": "markdown", + "id": "95e60d58", + "metadata": {}, + "source": [ + "Tercera explosión E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "69cffddc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(x + 1,\n", + " x^4*y^10 + x^3*y^6*z + x^2*y^6*z + z^3,\n", + " y + 1,\n", + " x^10*y^6 + x^6*y^4*z + x^6*y^3*z + z^3)" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g3=g2(x=x*y)/y\n", + "F3=F2(x=x*y)\n", + "g3b=g2(y=x*y)/x\n", + "F3b=F2(y=x*y)\n", + "g3, F3, g3b, F3b" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "15da5854", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (1948788351.py, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn [32], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m Aportación de intersección de E_1 (Integer(6),Integer(2)) y E_3 (Integer(16),Integer(5))\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "Aportación de intersección de E_1 (6,2) y E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "c2f28966", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/30) * (s + 1)^-2 * (s + 8/9)^-1 * (s^2 + 1/3*s + 8/3),\n", + " (-1) * (t - 1) * (t^2 + t + 1))" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z13 = ZetaFunctions(F3)\n", + "A13=Z13.topological_zeta(local=True, weights=[2,5,1])\n", + "M13=Z13.monodromy_zeta()\n", + "A13, M13" + ] + }, + { + "cell_type": "markdown", + "id": "d5937892", + "metadata": {}, + "source": [ + "Aportación de intersección de E_2 (9,3) y E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "3b735845", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/30) * (s + 1)^-2 * (s + 8/9)^-1 * (s^2 + 1/3*s + 8/3),\n", + " (-1) * (t - 1) * (t^2 + t + 1))" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z23 = ZetaFunctions(F3b)\n", + "A23=Z23.topological_zeta(local=True, weights=[5,3,1])\n", + "M23=Z23.monodromy_zeta()\n", + "A13, M23" + ] + }, + { + "cell_type": "markdown", + "id": "11af23cc", + "metadata": {}, + "source": [ + "Aportación de estrato abierto de E_3 (16,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "ac2bc045", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-7/45) * (s + 8/9)^-1 * (s + 1)^-1 * (s - 8/7),\n", + " (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1 * (t^6 + t^3 + 1)^-2)" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F3t=F3(x=x+3)\n", + "Z3t = ZetaFunctions(F3t)\n", + "A3t=Z3t.topological_zeta(local=True, weights=[1,5,1])\n", + "M3t=Z3t.monodromy_zeta()\n", + "A3t, M3t" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "634cf890", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-7/45) * (s + 8/9)^-1 * (s + 1)^-1 * (s - 8/7),\n", + " (-1) * (t - 1)^-1 * (t^2 + t + 1)^-1 * (t^6 + t^3 + 1)^-2)" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F3bt=F3b(y=y+3)\n", + "Z3bt = ZetaFunctions(F3bt)\n", + "A3bt=Z3bt.topological_zeta(local=True, weights=[5,1,1])\n", + "M3bt=Z3bt.monodromy_zeta()\n", + "A3bt, M3bt" + ] + }, + { + "cell_type": "markdown", + "id": "692b49ed", + "metadata": {}, + "source": [ + "Aportación de intersección de E_3 (16,5) y g_1" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "bb1fe1fb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/6) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 + 142/75*s + 24/25),\n", + " (t + 1) * (t - 1)^2 * (t^2 + t + 1) * (t^4 - t^3 + t^2 - t + 1) * (t^4 + t^3 + t^2 + t + 1))" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F30=F3(x=x-1)\n", + "Z30 = ZetaFunctions(F30)\n", + "A30=Z30.topological_zeta(local=True, weights=[1,5,1])\n", + "M30=Z30.monodromy_zeta()\n", + "A30, M30" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "449e86f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1/6) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 + 142/75*s + 24/25),\n", + " (t + 1) * (t - 1)^2 * (t^2 + t + 1) * (t^4 - t^3 + t^2 - t + 1) * (t^4 + t^3 + t^2 + t + 1))" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F3b0=F3b(y=y-1)\n", + "Z3b0 = ZetaFunctions(F3b0)\n", + "A3b0=Z3b0.topological_zeta(local=True, weights=[5,1,1])\n", + "M3b0=Z3b0.monodromy_zeta()\n", + "A3b0, M3b0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66af979c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "961e7c1f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "a269acd5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "T. = QQ[]\n", + "A=A1+A2b+A13+A23-A3t+A30\n", + "B=(-11/90) * (s + 8/9)^-1 * (s + 9/10)^-1 * (s + 1)^-1 * (s^2 - 69/11*s - 72/11)\n", + "A-B" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d561179", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5894ac92", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 10.2", + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000..6fab831 --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,1167 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 47, + "id": "e37c0bd5-313a-4d9d-8a84-ed4b1837a271", + "metadata": {}, + "outputs": [], + "source": [ + "load('../Descargas/ZetaFunctionsNewtonND.py')\n", + "R. = QQ[]\n", + "S. = QQ[]\n", + "T. = QQ[]\n", + "F = z^3 + 3 * (y^2 - x^3 + y^3) * z^2 + 3 * ((y^2 - x^3)^2 + x^2 * y^3 + x^7) * z + ((y^2 - x^3)^3 + x^2 * y^5) " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f03dbc9a-d581-4c88-8a5f-4292b0ea43a3", + "metadata": {}, + "outputs": [], + "source": [ + "Z = ZetaFunctions(F)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2a54e9c0-eb3d-4976-9ea2-74f32b9f4162", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "00865de1-1ce2-4565-8e0e-010d7f489cc1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F1 = F(z=z - y^2 + x^3 - y^3)\n", + "F1.coefficient({z:2})" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "401272bb-0d0c-4f59-9584-ac8a55e77a2d", + "metadata": {}, + "outputs": [], + "source": [ + "Z = ZetaFunctions(F1)\n", + "# Z.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d1f1a24d-8bbe-47ca-ba0c-193db86a4b4a", + "metadata": {}, + "outputs": [], + "source": [ + "f1, f2 = [F1.coefficient({z: j})(x=u, y=v) for j in (1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9b427c40-84c0-4706-910d-4198d219aa8f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAikAAAHVCAYAAAA0K2vhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEzklEQVR4nO3deXhU9fn+8XuyEiCJBlklBspqlE1AC6iogICIgLIJSFTU+pPFlVpAv9C6RMGtS0oN1aitgKUICgjiArggyiLVIiZsCggUtEgAIUDy/P6gGRkSkkkyM2eW9+u6cmkmszyZzHJzPuee4zIzEwAAQJCJcnoAAACA0hBSAABAUCKkAACAoERIAQAAQYmQAgAAghIhBQAABCVCCgAACEqEFAAAEJQIKQAAICiFVEj55ptv5HK5tH79eknS8uXL5XK59OOPPzo6V3mmTJmitm3bBvx2r7jiCt1zzz1+vY3T/ybecLlcmj9/vs9nCcTvG4y3XZ558+YpJiZGzZs31969e/16W40aNdJzzz1XoctkZ2crNTVVUVFReu655wL2fHnppZd01lln+f12yuPU60Ooqsxj7HSn/+198TcwM91xxx1KSUmp8GtiMKnMa7o/VSqkrFy5UtHR0erVq1e55z1+/LgefPBBtWrVSjVq1FCDBg00cuRI7dq1qzI37aFz587avXu3kpOTq3xd/vTAAw/ovffec3oM+NHrr7+uRx55pNKXLw7cZ/q68sorJZ0MQ2Wdb8WKFR7Xu2zZMg0bNkyTJ09WnTp11KtXL+Xn53uc55tvvtGoUaPUuHFjJSQkqEmTJpo8ebKOHTtW6d/HW/n5+RozZowefPBBfffdd7rjjjvC+vnir4AO5y1ZskQvvfSSFi5cqN27d+vCCy8s8/ybN29WYmKio0H55ptvVv/+/T1OS01N9Wr+QKlUSHnxxRc1duxYffTRR9q+fXuZ5/3pp5+0bt06Pfzww1q3bp1ef/115eXl6brrrqvUwKeKi4tTvXr15HK5qnxd/lSzZk3VqlXL6TEinj/fdFNSUpSYmFjpyxcH7tO/nn/+eblcLt11112SToah08/z7bff6sILL1SHDh10ySWXuK9z7dq1GjBggJ555hk9/PDDevvtt5WSkqLrrrtOR48edZ/v66+/VlFRkZ5//nlt2LBBzz77rP7yl79o4sSJlb9DvLR9+3YdP35cffr0Uf369VW9enWeLwhJW7ZsUf369dW5c2fVq1dPMTExZzzv8ePHdeONN+qyyy4L4IQ/KywsVFFRUak/i46OLnf+gLIKOnTokCUmJtrXX39tQ4YMsd/+9rcVvQr77LPPTJJ9++23ZZ7v008/tbZt21p8fLy1b9/eXn/9dZNkn3/+uZmZLVu2zCTZ/v37zcwsJyfHkpOTbcGCBda8eXNLSEiwG264wQ4dOmQvvfSSpaWl2VlnnWVjxoyxEydOuG+noKDAxo8fbw0aNLDq1avbxRdfbMuWLXP/vPh6lyxZYi1btrQaNWpYz549bdeuXe7zLFu2zDp27GjVq1e35ORk69y5s33zzTdmZjZ58mRr06aN+7yFhYX229/+1s4991yLi4uzNm3a2OLFi90/37Ztm0myuXPn2hVXXGEJCQnWunVrW7lypfs833//vQ0dOtTOPfdcS0hIsAsvvNBmzpzpcf917drV7r777jPev8Vz/eUvf7GGDRtaQkKCDRw40H1/VmTWzz//3IqKiqxJkyY2bdo0j9v58ssvzeVy2ebNm83MTJLNmDHD+vfvbwkJCda0aVN74403PC6zYcMG6927t9WoUcPq1KljI0aMsH379rl/fujQIbvpppusRo0aVq9ePXvqqadK/L5paWn2yCOPWEZGhiUlJdnIkSPNzOyf//ynpaenW1xcnKWlpdlTTz3lcdtpaWn22GOP2S233GI1a9a01NRUe/755894P5Z2X1fmOk731VdfWVJSkk2aNKnM8912221Wt25d27Fjh/u0r7/+2urVq2cvv/yyx3mPHj1qffv2teuuu86OHz9+xuucOnWqNW7cuMzb/c9//mPXXnutVatWzRo1amR///vfLS0tzZ599ln3eX788Ue7/fbbrXbt2paYmGhXXnmlrV+/3sxOPq8keXxt27atxPMlIyPD+vXrZ9OmTbN69epZSkqK3XXXXXbs2DH3ecp7DhffXmpqqiUkJFj//v3tqaeesuTk5DJ/x1//+tfWrFkzS0hIsMaNG9tDDz3kcbvr16+3K664wmrWrGmJiYl20UUX2erVq0u9rrS0NI/fNS0tzcx+fh6+8sorlpaWZklJSTZkyBDLz893X7aoqMiefPJJa9y4sVWrVs1at25tc+bMKXP2o0eP2vjx461hw4YWFxdnTZs2tb/+9a/uny9fvtw6duxocXFxVq9ePXvwwQc9HhNdu3a1sWPH2vjx4+3ss8+2unXr2uTJk90/Hzp0qA0ZMsTjNo8dO2a1atWyF198sdy5i4qKrFu3btazZ08rKioyM7P9+/dbamqqTZw48Yy/V3nPrdPfF8zMPv/8c/fjy+zn1/Ripz/mSlPW/ZWRkVHq3/ZMfv3rX9uIESNKzFGaX/7yl/bggw96nLZ3716LiYmx999/38y8fw9bsGCBnX/++RYdHW0jR44s8fxbtmyZx2t6sX//+992zTXXWGJiotWsWdMuvfRS9+u5mdmLL75oLVu2tPj4eGvRooVlZWW5f1ZQUGCjR4+2evXqWXx8vKWlpdnjjz9e5u98qgqHlBdeeME6dOhgZmYLFiywRo0auR9g3nrnnXfM5XLZgQMHznieQ4cOWe3atW3IkCH273//2xYsWGC/+MUvyg0psbGx1qNHD1u3bp2tWLHCatWqZVdffbUNHjzYNmzYYAsWLLC4uDibPXu2+7aGDRtmnTt3tg8++MA2b95s06ZNs/j4eMvLy/O43u7du9vq1att7dq1dv7559uwYcPMzOz48eOWnJxsDzzwgG3evNm++uore+mll9wh7PQnwDPPPGNJSUk2a9Ys+/rrr+3Xv/61xcbGum+v+EHSsmVLW7hwoeXm5trAgQMtLS3N/aTYuXOnTZs2zT7//HPbsmWL/eEPf7Do6GhbtWqV+3a8CSk1atSwq666yj7//HNbsWKFNW3a1P17VWTW4r/JY489Zunp6R63c++999rll1/u/l6SNWzY0GbOnGmbNm2ycePGWc2aNe2HH34wM7Ndu3bZOeecYxMmTLCNGzfaunXrrEePHnbllVe6r+P//b//Zw0bNrSlS5faF198Yddee63VrFmzRFBISkqyadOm2aZNm2zTpk22Zs0ai4qKst/97neWm5trOTk5lpCQYDk5OR6XS0lJsaysLNu0aZNlZmZaVFSUbdy48Yz3ZWkhpaLXcar9+/db8+bNrW/fvmU+v7KysiwuLs4+/vhjr67XW5MmTbL27duXeZ7evXvbhRdeaCtXrrQ1a9ZY586dLSEhwR1SioqKrEuXLta3b19bvXq15eXl2f3332+1atWyH374wX766Sd79913TZJ99tlntnv3bjtx4kSpISUpKcnuvPNO27hxoy1YsMCqV69u2dnZ7vOU9xxetWqVuVwuy8zMtNzcXPv9739vZ511VrlvEI888oh9/PHHtm3bNnvzzTetbt269uSTT7p/fsEFF9iIESNs48aNlpeXZ//4xz/cIex0e/fuNUmWk5Nju3fvtr1795rZyedhzZo17frrr7cvv/zSPvjgA6tXr57HG/XEiROtZcuWtmTJEtuyZYvl5ORYfHy8LV++/IyzDx482FJTU+3111+3LVu22Lvvvut+3du5c6dVr17d7rrrLtu4caPNmzfPzjnnHI8Q0rVrV0tKSrIpU6ZYXl6evfzyy+ZyuWzp0qVmdvL1PyEhwQ4ePOi+zIIFC6xatWru1/by5t65c6edffbZ9txzz5mZ2ZAhQ6xDhw4eQfB05T23/BFSyru/fvzxR/vd735nDRs29Pjblua9996zxo0b24EDB7wKKX/84x/tvPPO83gd+OMf/2jnnnuuFRYWmpn372GdO3e2jz/+2L7++mv78ccfbfDgwdarVy/bvXu37d692woKCkq8pu/cudNSUlLs+uuvt9WrV1tubq69+OKL9vXXX5uZWXZ2ttWvX9/mzp1rW7dutblz51pKSoq99NJLZmY2bdo0S01NtQ8++MC++eYb+/DDD0v8g7osFQ4pnTt3dj+gjh8/buecc4698847Xl/+yJEj1r59exs+fHiZ53v++ectJSXFDh8+7D5t+vTp5YYUSR4J71e/+pVVr17d44nUs2dP+9WvfmVmZps3bzaXy2Xfffedx+1369bNJkyYcMbrzcrKsrp165qZ2Q8//GCSzviCcfoToEGDBvbYY495nKdjx4521113mdnPb/yn/qtnw4YNJqnMN7lrrrnG7r//fvf33oSU6Ohoj3+BL1682KKiomz37t0VmrX4b7Jr1y6Ljo62Tz/91MxO/suqdu3a7ges2cmQ8tBDD7m/P3TokLlcLvcWmocfftiuvvpqj9vcsWOHSbLc3Fw7ePBgiaD5ww8/WEJCQomg0L9/f4/rGTZsmPXo0cPjtPHjx3sEq7S0NBsxYoT7+6KiIqtTp45Nnz69tLvRzEoPKRW9jmKFhYXWu3dvO//888sM8itWrLDY2FibMWNGuddZEZs3b7akpKQyrzc3N9ckeYTijRs3miR3SHnvvfcsKSnJjh496nHZJk2auP/le/qbh1nJ50tGRoalpaV5bP0cNGiQ+1/x3jyHb7zxRuvVq5fHz4cMGVLuG8Tppk6d6hHeEhMTPR7b5ZFk8+bN8zht8uTJVr16dY8tJ+PHj7dLLrnEzE4+P6pVq+axJdXMbNSoUXbjjTeWejvFf58zvTZPnDjRWrRo4fHGl5WVZTVr1nS/8XXt2tUuvfRSj8t17NjR/a/6Y8eO2TnnnGOvvPKK++c33nijDRo0qEJz/+Mf/7D4+HibMGGCVa9e3XJzc0uduVh5zy1/hBRv7q9nn3223C0o33//vaWmptqKFStKnaM0xVtNPvjgA/dpnTp1svHjx5tZxd7DTg/QxVspT3X6a/qECROscePGZwyOqampJULHI488Yp06dTIzs7Fjx9pVV11V4Y0ZxSq06JSbm6vPPvtMr7/+uiQpJiZGQ4YM0Ysvvqju3buXe/njx49r6NChKioq0p///Gf36Xfeeaf+/ve/u78/dOiQNm7cqDZt2qh69eru0zt16lTubVSvXl1NmjRxf1+3bl01atRINWvW9DituOWwbt06mZmaN2/ucT0FBQUe6+KnX2/9+vXd15GSkqKbb75ZPXv2VI8ePdS9e3cNHjxY9evXLzFffn6+du3apS5dunic3qVLF/3rX//yOK1169YetydJe/fuVcuWLVVYWKgnnnhCr732mr777jsVFBSooKBANWrUKPc+OtV5552nhg0bur/v1KmTioqKlJubq+rVq3s966lz9unTRy+++KIuvvhiLVy4UEePHtWgQYPO+LvVqFFDiYmJ7vtz7dq1WrZsmcffrNiWLVt05MgRHTt2zOPxkJKSohYtWpQ4f4cOHTy+37hxo/r161fi93nuuedUWFio6OjoEvO5XC7Vq1evws2Yyl7HxIkT9cknn+izzz5TUlJSqefZvn27Bg4cqDvuuEO33XZbheYqy65du9SrVy8NGjSozOvduHGjYmJiPO7fli1beuwEuHbtWh06dKjE/iVHjhzRli1bKjTXBRdc4P7bSCcfZ19++aUk757DGzdu1IABAzx+3qlTJy1ZsqTM2/3nP/+p5557Tps3b9ahQ4d04sQJj7/Jfffdp9tuu01/+9vf1L17dw0aNMjjdcJbjRo18tin6dTXl6+++kpHjx5Vjx49PC5z7NgxtWvXrtTrW79+vaKjo9W1a9dSf75x40Z16tTJY3++Ll266NChQ9q5c6fOO+88SZ6P4dPnio2N1aBBg/Tqq6/qpptu0uHDh/XGG29o5syZFZp70KBBmjdvnjIzMzV9+vQSf8fS+OL5WRHe3l/luf322zVs2DBdfvnlXt927dq11aNHD7366qu67LLLtG3bNn3yySeaPn26JO/fw+Li4kr8Pb2xfv16XXbZZYqNjS3xs3379mnHjh0aNWqUbr/9dvfpJ06ccBdabr75ZvXo0UMtWrRQr169dO211+rqq6/2+vYrFFJeeOEFnThxQueee677NDNTbGys9u/fr7PPPvuMlz1+/LgGDx6sbdu26f333/d4ov/ud7/TAw884HF+M6vIaG6n35Eul6vU04p3GioqKlJ0dLTWrl3r8SIoyeNNsrTrOHXGnJwcjRs3TkuWLNFrr72mhx56SO+8845++ctfljrn6Tv7mlmJ0069zeKfFc/99NNP69lnn9Vzzz3nbk7dc889Vd45tPh2Tp3Fm1lPddttt+mmm27Ss88+q5ycHA0ZMsQjbJ7+uxXfxql/k759++rJJ58scd3169fXpk2bvP59Tg9tpc1e2mOtrPm8VZnreO211/TUU09p0aJFatasWannOXLkiAYMGKALLrigylXMU+3atUtXXnmlOnXqpOzs7DLPW3yflfU4KCoqUv369bV8+fISP6too6Gqz+HKvJ6sWrVKQ4cO1W9/+1v17NlTycnJmj17tp5++mn3eaZMmaJhw4Zp0aJFWrx4sSZPnqzZs2eXCERV/f0kadGiRR6vvZIUHx9f6vUlJCSUeXtlPQ9OPb28x/Dw4cPVtWtX7d27V++8846qVaum3r17V2jun376yf238/a5XdZcUVFRHr+PdPL9pyq8vb/K8/777+vNN9/UU0895b6OoqIixcTEKDs7W7feemuplxs+fLjuvvtu/fGPf9TMmTN1wQUXqE2bNpK8fw9LSEioVMmkrMdS8X0+Y8YMj532Jblnueiii7Rt2zYtXrxY7777rgYPHqzu3bvrn//8p1e373VIOXHihF555RU9/fTTJVLQDTfcoFdffVVjxowp9bLFAWXTpk1atmxZiX9Z1alTR3Xq1PE4LT09XX/729905MgR9520atUqb8f1Wrt27VRYWKi9e/dWeU/rdu3aqV27dpowYYI6deqkmTNnlggpSUlJatCggT766COPNL1y5UpdfPHFXt/Whx9+qH79+mnEiBGSTj5YNm3apPPPP79CM2/fvl27du1SgwYNJEmffPKJoqKi1Lx580rPes0116hGjRqaPn26Fi9erA8++KBCM1100UWaO3euGjVqVOoe5k2bNlVsbKxWrVrl/hfM/v37lZeXd8Z/ORZLT0/XRx995HHaypUr1bx58xJP8EBbv369br31Vj3xxBPq2bPnGc9322236b///a/efvttn+2B/9133+nKK69U+/btlZOT436hP5Pzzz9fJ06c0Jo1a9yPhdzcXI/PLLrooou0Z88excTEqFGjRj6ZszTePIfT09NLvH6U93ry8ccfKy0tTZMmTXKf9u2335Y4X/PmzdW8eXPde++9uvHGG5WTk3PGkBIbG6vCwsLyfqUSs8fHx2v79u3lPr6LtWrVSkVFRVqxYkWpW7nT09M1d+5cjzfflStXKjExsUSgKEvnzp2Vmpqq1157TYsXL9agQYMUFxdXobnvv/9+RUVFafHixbrmmmvUp08fXXXVVV7PcLratWtLknbv3u3+h3NVP/PDV/fXJ5984vH3f+ONN/Tkk09q5cqVZV5P//799atf/UpLlizRzJkzddNNN7l/VpX3sLi4uHIfj61bt9bLL7+s48ePlwiHdevW1bnnnqutW7dq+PDhZ7yOpKQkDRkyREOGDNHAgQPVq1cv/fe//1VKSkq5M3r9Crdw4ULt379fo0aNKvG5JAMHDtQLL7xQakg5ceKEBg4cqHXr1mnhwoUqLCzUnj17JJ3cRF/8gD7dsGHDNGnSJI0aNUoPPfSQvvnmG3f69KXmzZtr+PDhGjlypJ5++mm1a9dO33//vd5//321atVK11xzTbnXsW3bNmVnZ+u6665TgwYNlJubq7y8PI0cObLU848fP16TJ09WkyZN1LZtW+Xk5Gj9+vV69dVXvZ67adOmmjt3rlauXKmzzz5bzzzzjPbs2VPhkFKtWjVlZGToqaeeUn5+vsaNG6fBgwerXr16lZ41OjpaN998syZMmKCmTZt6tUx3qtGjR2vGjBm68cYbNX78eJ1zzjnavHmzZs+erRkzZqhmzZoaNWqUxo8fr1q1aqlu3bqaNGlSuW+s0skXxI4dO+qRRx7RkCFD9Mknn+hPf/qTx/KjE77//nv1799fV1xxhUaMGOF+jhSLjo5W7dq1NW3aNM2ZM0cLFizQiRMnSpwvOTm53H9Fn27Xrl264oordN555+mpp57Svn373D8rfhycrnjT7e23367s7GzFxMTonnvu8bjt7t27q1OnTurfv7+efPJJtWjRQrt27dJbb72l/v37l1iKqyxvnsPjxo1T586dNXXqVPXv319Lly4td6mnadOm2r59u2bPnq2OHTtq0aJFmjdvnvvnR44c0fjx4zVw4EA1btxYO3fu1OrVq3XDDTec8TobNWqk9957T126dFF8fHyZW5+LJSYm6oEHHtC9996roqIiXXrppcrPz9fKlStVs2ZNZWRklHo7GRkZuvXWW/WHP/xBbdq00bfffqu9e/dq8ODBuuuuu/Tcc89p7NixGjNmjHJzczV58mTdd999Xj2PirlcLg0bNkx/+ctflJeXp2XLllVo7kWLFunFF1/UJ598oosuuki/+c1vlJGRoS+++MKr+6Y0TZs2VWpqqqZMmaJHH31UmzZt8tj6VRm+ur9Of31es2aNoqKiyv1Mkho1aqhfv356+OGHtXHjRg0bNsz9s6q8hzVq1Ehvv/22cnNzVatWrVI/c2zMmDH64x//qKFDh2rChAlKTk7WqlWrdPHFF6tFixaaMmWKxo0bp6SkJPXu3VsFBQVas2aN9u/fr/vuu0/PPvus6tevr7Zt2yoqKkpz5sxRvXr1vN+a6u3OK9dee61dc801pf5s7dq1JsnWrl1b4mfFO+GU9nV6RfB0n3zyibVp08bi4uKsbdu2NnfuXK8qyKcqbYeo03cWOnbsmP3f//2fNWrUyGJjY61evXo2YMAA++KLL854vfPmzbPiu2/Pnj3Wv39/q1+/vrvW+n//93/uHarKqiDHxsaWWesttn//fo/77IcffrB+/fpZzZo1rU6dOvbQQw/ZyJEjPX4vbyvIf/7zn61BgwZWrVo1u/766+2///1vlWY1M9uyZYtJsqlTp5a4XZWy82BycrJHwyYvL88GDBhgZ511liUkJFjLli3tnnvuce98dfDgQRsxYoRVr17d6tata1OnTi1159VT67DFiivIsbGxdt5555WoTJd2uTZt2ng0H07nzW2XdR0vvfTSGZ8nOqXS2KhRozLPd+p96K3SqsDFX2XZvXu39enTx+Lj4+28885zV2hP/b3z8/Nt7Nix1qBBA4uNjbXU1FQbPny4bd++3cy833H29J377r77buvatav7+/Kew2Ynm4nFVfu+fft6VUEeP3681apVy2rWrGlDhgyxZ5991n2ZgoICGzp0qKWmplpcXJw1aNDAxowZY0eO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zgsvvKDevXurQYMGTo/iFbakIKSNHTtWb775ppYtWxaxB5yMi4tT06ZN1aFDB2VmZqpNmzb6/e9/7/RYAbV27Vrt3btX7du3V0xMjGJiYrRixQr94Q9/UExMjAoLC50e0TE1atRQq1attGnTJqdHCaj69euXCOrnn3++tm/f7tBEzvv222/17rvv6rbbbnN6FK+xJQUhycw0duxYzZs3T8uXL1fjxo2dHilomJkKCgqcHiOgunXrVqLBcsstt6hly5Z68MEHFR0d7dBkzisoKNDGjRt12WWXOT1KQHXp0qXExxLk5eUpLS3NoYmcV1ww6NOnj9OjeI2QEmIOHTqkzZs3u7/ftm2b1q9fr5SUFJ133nkOThZYo0eP1syZM/XGG28oMTFRe/bskSQlJycrISHB4ekCZ+LEierdu7dSU1N18OBBzZ49W8uXLy/Rfgp3iYmJJfZHqlGjhmrVqhVx+yk98MAD6tu3r8477zzt3btXjz76qPLz85WRkeH0aAF17733qnPnznr88cc1ePBgffbZZ8rOzlZ2drbTozmiqKhIOTk5ysjIUExMCL31G0LKsmXLTFKJr4yMDKdHC6jS7gNJlpOT4/RoAXXrrbdaWlqaxcXFWe3ata1bt262dOlSp8cKCl27drW7777b6TECbsiQIVa/fn2LjY21Bg0a2PXXX28bNmxweixHLFiwwC688EKLj4+3li1bWnZ2ttMjOebtt982SZabm+v0KBXCx+IDAICgxI6zAAAgKBFSAABAUCKkAACAoERIAQAAQYmQAgAAghIhBQAABCVCCgAACEqEFAAAEJQIKQAAICgRUgAAQFAipAAAgKBESAEAAEHp/wOQUOt5IY0G4wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "A 2-dimensional polyhedron in ZZ^2 defined as the convex hull of 4 vertices" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f1.newton_polytope()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ef34032e-a446-4e5c-9e0d-1999cc2b8e72", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z1 = ZetaFunctions(f1)\n", + "Z1.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "309918bb-6988-4676-92bd-3e8e50045585", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAikAAAHVCAYAAAA0K2vhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDZ0lEQVR4nO3dfZyNdf7H8feZG2OGmSnkrsawSZpUKlOh0IZssrQbCtF2s7YQtdnSzZJ+JVFpa7bSRkqWrEj5qSRRdCMRRTNIRfjpRjOUhpn5/P7QnHWYGWduzlw35/V8PObBuc451/U515yb9/l+r89cATMzAQAAuEyM0wUAAACUhJACAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABcyVMh5csvv1QgENCaNWskSW+//bYCgYB+/PFHR+s6mjFjxqh169bVvt1OnTppxIgREd3G4b+TcAQCAc2bN6/Ka6mOx+vGbR/N3LlzFRcXpxYtWmjXrl0R3VbTpk01adKkct1n8uTJSktLU0xMjCZNmlRtr5dnn31WxxxzTMS3czROvT94VUWeY4c7/HdfFb8DM9Of//xn1alTp9zviW5Skff0SKpQSFmxYoViY2PVrVu3o972wIEDuu2223TaaaepVq1aaty4sQYOHKjt27dXZNMh2rVrpx07dig1NbXS64qkW2+9VYsXL3a6DETQSy+9pHvvvbfC9y8O3KX9XHjhhZIOhqGybrd06dKQ9S5ZskT9+vXT6NGjVb9+fXXr1k15eXkht/nyyy917bXXqlmzZkpMTNSJJ56o0aNHa//+/RV+POHKy8vT0KFDddttt+mbb77Rn//8Z1+/XiIV0OG81157Tc8++6xeffVV7dixQ61atSrxdmamiRMnqkWLFkpISFBaWpruv//+aq72oKuvvlq9evUKWZaWllZm/dUtriJ3mjJlioYNG6Z//etf+vrrr9WkSZNSb/vzzz/r448/1t13360zzjhDu3fv1ogRI/T73/9eH330UYULl6QaNWqoYcOGlVpHdahdu7Zq167tdBlRb//+/apRo0ZE1l2nTp1K3b84cB9u/vz5+stf/qIbb7xR0sEwdHh42L9/v7p3766aNWvq3HPPDS5ftWqVLrvsMj388MO64YYbdMstt6hnz576/e9/r9dee001a9aUJH3++ecqKirSU089pebNm+vTTz/V9ddfr59++kkTJ06s1OM6mq+//loHDhxQ9+7d1ahRo+ByXi/wms2bN6tRo0Zq165dmbcbPny43njjDU2cOFGnnXaacnNz9d1331VTlQcVFhYqEAiUeF1sbKy7PletnPbu3WvJycn2+eefW9++fe2ee+4p7yrsww8/NEn21VdflXm7Dz74wFq3bm0JCQl29tln20svvWSSbPXq1WZmtmTJEpNku3fvNjOzqVOnWmpqqr3yyivWokULS0xMtD/+8Y+2d+9ee/bZZy09Pd2OOeYYGzp0qBUUFAS3k5+fbyNHjrTGjRtbUlKSnXPOObZkyZLg9cXrfe2116xly5ZWq1Ytu/jii2379u3B2yxZssQyMzMtKSnJUlNTrV27dvbll1+amdno0aPtjDPOCN62sLDQ7rnnHjv++OOtRo0adsYZZ9jChQuD12/ZssUk2Zw5c6xTp06WmJhop59+uq1YsSJ4m++++86uuOIKO/744y0xMdFatWplM2bMCNl/HTt2tOHDh5e6f4vrevLJJ+2EE06wxMREu/zyy4P7szy1rl692oqKiuzEE0+0CRMmhGxn3bp1FggEbNOmTWZmJsmefvpp69WrlyUmJlrz5s3t5ZdfDrnPZ599Zr/73e+sVq1aVr9+fRswYIB9++23wev37t1rV111ldWqVcsaNmxoEydOPOLxpqen27333muDBg2ylJQUGzhwoJmZ/ec//7GMjAyrUaOGpaen28SJE0O2nZ6ebvfdd5/96U9/stq1a1taWpo99dRTpe7HkvZ1RdZxuPXr11tKSordeeedZd7uuuuuswYNGtjWrVuDyz7//HNr2LChTZs2LeS2v/zyi/Xo0cN+//vf24EDB0pd54MPPmjNmjUrc7v/93//Z5deeqnVrFnTmjZtatOnT7f09HR75JFHgrf58ccf7frrr7fjjjvOkpOT7cILL7Q1a9aY2cHXlaSQny1bthzxehk0aJD17NnTJkyYYA0bNrQ6derYjTfeaPv37w/e5miv4eLtpaWlWWJiovXq1csmTpxoqampZT7Gv/3tb3bSSSdZYmKiNWvWzO66666Q7a5Zs8Y6depktWvXtuTkZDvrrLNs5cqVJa4rPT095LGmp6eb2X9fh88995ylp6dbSkqK9e3b1/Ly8oL3LSoqsvHjx1uzZs2sZs2advrpp9vs2bPLrP2XX36xkSNH2gknnGA1atSw5s2b27/+9a/g9W+//bZlZmZajRo1rGHDhnbbbbeFPCc6duxow4YNs5EjR9qxxx5rDRo0sNGjRwevv+KKK6xv374h29y/f7/VrVvXpkyZctS6i4qK7KKLLrKLL77YioqKzMxs9+7dlpaWZnfccUepj+tor63DPxfMzFavXh18fpn99z292OHPuZKUtb8GDRpU4u/2cOvXr7e4uDj7/PPPy9zWoc477zy77bbbQpbt2rXL4uLi7K233jKz8D/DXnnlFTvllFMsNjbWBg4ceMTrb8mSJSHv6cU+/fRTu+SSSyw5Odlq165t559/fvD93MxsypQp1rJlS0tISLCTTz7ZsrKygtfl5+fbkCFDrGHDhpaQkGDp6el2//33h/34yx1SnnnmGWvTpo2Zmb3yyivWtGnT4BMsXIsWLbJAIGC5ubml3mbv3r123HHHWd++fe3TTz+1V155xX7zm98cNaTEx8dbly5d7OOPP7alS5da3bp1rWvXrtanTx/77LPP7JVXXrEaNWrYzJkzg9vq16+ftWvXzpYtW2abNm2yCRMmWEJCguXk5ISst3PnzrZy5UpbtWqVnXLKKdavXz8zMztw4IClpqbarbfeaps2bbL169fbs88+Gwxhh78AHn74YUtJSbF///vf9vnnn9vf/vY3i4+PD26v+EnSsmVLe/XVVy07O9suv/xyS09PD74otm3bZhMmTLDVq1fb5s2b7R//+IfFxsba+++/H9xOOCGlVq1a9tvf/tZWr15tS5cutebNmwcfV3lqLf6d3HfffZaRkRGynZtvvtk6dOgQvCzJTjjhBJsxY4Zt3LjRbrrpJqtdu7Z9//33Zma2fft2q1evno0aNco2bNhgH3/8sXXp0sUuvPDC4DpuuOEGO+GEE+yNN96wtWvX2qWXXmq1a9c+IiikpKTYhAkTbOPGjbZx40b76KOPLCYmxsaOHWvZ2dk2depUS0xMtKlTp4bcr06dOpaVlWUbN260cePGWUxMjG3YsKHUfVlSSCnvOg61e/dua9GihfXo0aPM11dWVpbVqFHDli9fHtZ6w3XnnXfa2WefXeZtfve731mrVq1sxYoV9tFHH1m7du0sMTExGFKKioqsffv21qNHD1u5cqXl5OTYX//6V6tbt659//339vPPP9ubb75pkuzDDz+0HTt2WEFBQYkhJSUlxf7yl7/Yhg0b7JVXXrGkpCSbPHly8DZHew2///77FggEbNy4cZadnW2PPvqoHXPMMUcNKffee68tX77ctmzZYvPnz7cGDRrY+PHjg9efeuqpNmDAANuwYYPl5OTYiy++GAxhh9u1a5dJsqlTp9qOHTts165dZnbwdVi7dm37wx/+YOvWrbNly5ZZw4YNQz6o77jjDmvZsqW99tprtnnzZps6daolJCTY22+/XWrtffr0sbS0NHvppZds8+bN9uabbwbf97Zt22ZJSUl244032oYNG2zu3LlWr169kBDSsWNHS0lJsTFjxlhOTo5NmzbNAoGAvfHGG2Z28P0/MTHR9uzZE7zPK6+8YjVr1gy+tx+t7m3bttmxxx5rkyZNMjOzvn37Wps2bUKC4OGO9tqKREg52v768ccfbezYsXbCCSeE/G4PN378eGvRooVNnDjRmjZtaunp6XbttdcG3/tK8thjj1mTJk1C3gcee+wxO/74462wsNDMwv8Ma9eunS1fvtw+//xz+/HHH61Pnz7WrVs327Fjh+3YscPy8/OPeE/ftm2b1alTx/7whz/YypUrLTs726ZMmRIMWpMnT7ZGjRrZnDlz7IsvvrA5c+ZYnTp17NlnnzUzswkTJlhaWpotW7bMvvzyS3vnnXeO+EJdlnKHlHbt2gWfUAcOHLB69erZokWLwr7/vn377Oyzz7b+/fuXebunnnrK6tSpYz/99FNw2RNPPHHUkCIpJOENHjzYkpKSQl5IF198sQ0ePNjMzDZt2mSBQMC++eabkO1fdNFFNmrUqFLXm5WVZQ0aNDAzs++//94klfqGcfgLoHHjxnbfffeF3CYzM9NuvPFGM/vvB/+h33o+++wzk1Tmh9wll1xif/3rX4OXwwkpsbGxId/AFy5caDExMbZjx45y1Vr8O9m+fbvFxsbaBx98YGYHv1kdd9xxwSes2cGQctdddwUv79271wKBQHCE5u6777auXbuGbHPr1q0mybKzs23Pnj1HBM3vv//eEhMTjwgKvXr1CllPv379rEuXLiHLRo4cGRKs0tPTbcCAAcHLRUVFVr9+fXviiSdK2o1mVnJIKe86ihUWFtrvfvc7O+WUU8oM8kuXLrX4+Hh7+umnj7rO8ti0aZOlpKSUud7s7GyTFBKKN2zYYJKCIWXx4sWWkpJiv/zyS8h9TzzxxOA338M/PMyOfL0MGjTI0tPTQ0Y/e/fuHfwWH85r+Morr7Ru3bqFXN+3b9+jhpTDPfjggyHhLTk5OeS5fTSSbO7cuSHLRo8ebUlJSSEjJyNHjrRzzz3XzA6+PmrWrBkykmpmdu2119qVV15Z4naKfz+lvTffcccddvLJJ4d88GVlZVnt2rWDH3wdO3a0888/P+R+mZmZwW/1+/fvt3r16tlzzz0XvP7KK6+03r17l6vuF1980RISEmzUqFGWlJRk2dnZJdZc7GivrUiElHD21yOPPFLqCEqxwYMHW0JCgp177rm2bNkyW7JkibVu3TrkC9jhikdNli1bFlzWtm1bGzlypJmV7zPs8ABdPEp5qMPf00eNGmXNmjUrNTimpaUdETruvfdea9u2rZmZDRs2zH7729+WezCjWLmOScnOztaHH36ol156SZIUFxenvn37asqUKercufNR73/gwAFdccUVKioq0j//+c/g8r/85S+aPn168PLevXu1YcMGnXHGGUpKSgoub9u27VG3kZSUpBNPPDF4uUGDBmratGnIHHeDBg2CXQ4ff/yxzEwtWrQIWU9+fr7q1q1b6nobNWoUXEedOnV09dVX6+KLL1aXLl3UuXNn9enTJ2SOvVheXp62b9+u9u3bhyxv3769Pvnkk5Blp59+esj2JGnXrl1q2bKlCgsL9cADD2jWrFn65ptvlJ+fr/z8fNWqVeuo++hQTZo00QknnBC83LZtWxUVFSk7O1tJSUlh13pond27d9eUKVN0zjnn6NVXX9Uvv/yi3r17l/rYatWqpeTk5OD+XLVqlZYsWVLicQmbN2/Wvn37tH///pDnQ506dXTyyScfcfs2bdqEXN6wYYN69ux5xOOZNGmSCgsLFRsbe0R9gUBADRs2LHdnTEXXcccdd+i9997Thx9+qJSUlBJv8/XXX+vyyy/Xn//8Z1133XXlqqss27dvV7du3dS7d+8y17thwwbFxcWF7N+WLVuGdEysWrVKe/fuDXkdSdK+ffu0efPmctV16qmnBn830sHn2bp16ySF9xresGGDLrvsspDr27Ztq9dee63M7f7nP//RpEmTtGnTJu3du1cFBQUhv5NbbrlF1113nZ5//nl17txZvXv3DnmfCFfTpk2VnJwc8viKnyvr16/XL7/8oi5duoTcZ//+/TrzzDNLXN+aNWsUGxurjh07lnj9hg0b1LZt25DjEtq3b6+9e/dq27ZtweMMD30OH15XfHy8evfurRdeeEFXXXWVfvrpJ7388suaMWNGueru3bu35s6dq3HjxumJJ5444vdYkqp4fZZHuPvraIqKipSfn6/nnnsu+DifeeYZnX322crOzi7xPey4445Tly5d9MILL+iCCy7Qli1b9N577+mJJ56QFP5nWI0aNY74fYZjzZo1uuCCCxQfH3/Edd9++622bt2qa6+9Vtdff31weUFBQbCh5eqrr1aXLl108sknq1u3brr00kvVtWvXsLdfrpDyzDPPqKCgQMcff3xwmZkpPj5eu3fv1rHHHlvqfQ8cOKA+ffpoy5Yteuutt0Je6GPHjtWtt94acnszK09pQYfvyEAgUOKyoqIiSQefNLGxsVq1alXIm6AUevBeSes4tMapU6fqpptu0muvvaZZs2bprrvu0qJFi3TeeeeVWOfhBy2Z2RHLDt1m8XXFdT/00EN65JFHNGnSpGDn1IgRIyrdkVG8nUNrCafWQ1133XW66qqr9Mgjj2jq1Knq27dvSNg8/LEVb+PQ30mPHj00fvz4I9bdqFEjbdy4MezHc3hoK6n2kp5rZdUXroqsY9asWZo4caIWLFigk046qcTb7Nu3T5dddplOPfXUSrdiHmr79u268MIL1bZtW02ePLnM2xbvs7KeB0VFRWrUqJHefvvtI64rb+tvZV/DFXk/ef/993XFFVfonnvu0cUXX6zU1FTNnDlTDz30UPA2Y8aMUb9+/bRgwQItXLhQo0eP1syZM48IRJV9fJK0YMGCkPdeSUpISChxfYmJiWVur6zXwaHLj/Yc7t+/vzp27Khdu3Zp0aJFqlmzpn73u9+Vq+6ff/45+LsL97VdVl0xMTEhj0c6+PlTGeHur6Np1KhR8M8BFDvllFMkHfziUVJIkQ7u5+HDh+uxxx7TjBkzdOqpp+qMM86QFP5nWGJiYrlqPfR+pSne508//XTIQfuSgrWcddZZ2rJlixYuXKg333xTffr0UefOnfWf//wnrO2HHVIKCgr03HPP6aGHHjoiBf3xj3/UCy+8oKFDh5Z43+KAsnHjRi1ZsuSIb1b169dX/fr1Q5ZlZGTo+eef1759+4I76f333w+33LCdeeaZKiws1K5du3TBBRdUel1nnnmmRo0apbZt22rGjBlHhJSUlBQ1btxY7777rjp06BBcvmLFCp1zzjlhb+udd95Rz549NWDAAEkHnywbN24MPuHD9fXXX2v79u1q3LixJOm9995TTEyMWrRoUeFaL7nkEtWqVUtPPPGEFi5cqGXLlpWrprPOOktz5sxR06ZNFRd35FO0efPmio+P1/vvvx/8BrN7927l5OSU+s2xWEZGht59992QZStWrFCLFi2OeIFXtzVr1uiaa67RAw88oIsvvrjU21133XX64Ycf9Prrr5e4fyrim2++0YUXXqizzz5bU6dODb7Rl+aUU05RQUGBPvroo+BzITs7O+RvFp111lnauXOn4uLi1LRp0yqpsyThvIYzMjKOeP842vvJ8uXLlZ6erjvvvDO47Kuvvjridi1atFCLFi10880368orr9TUqVNLDSnx8fEqLCw82kM6ovaEhAR9/fXXR31+FzvttNNUVFSkpUuXljjKnZGRoTlz5oR8+K5YsULJyclHBIqytGvXTmlpaZo1a5YWLlyo3r17Bzvowq37r3/9q2JiYrRw4UJdcskl6t69u37729+GXcPhjjvuOEnSjh07gl+cK/s3P6pqf7Vv314FBQXavHlzcMQtJydHkpSenl7q/Xr16qXBgwfrtdde04wZM3TVVVcFr6vMZ1iNGjWO+nw8/fTTNW3aNB04cOCIcNigQQMdf/zx+uKLL9S/f/9S15GSkqK+ffuqb9++uvzyy9WtWzf98MMPYXVFhv13Ul599VXt3r1b1157rVq1ahXyc/nll+uZZ54p8X4FBQW6/PLL9dFHH+mFF15QYWGhdu7cqZ07d5b5rb9fv36KiYnRtddeq/Xr1+t///d/I9IO2aJFC/Xv318DBw7USy+9pC1btmjlypUaP368/vd//zesdWzZskWjRo3Se++9p6+++kpvvPGGcnJySg0MI0eO1Pjx4zVr1ixlZ2fr9ttv15o1azR8+PCw627evLkWLVqkFStWaMOGDRo8eLB27twZ9v2L1axZU4MGDdInn3yid955RzfddJP69OkTbEGrSK2xsbG6+uqrNWrUKDVv3jysabpDDRkyRD/88IOuvPJKffjhh/riiy/0xhtv6JprrlFhYaFq166ta6+9ViNHjtTixYv16aef6uqrrz7qB6t08A1x8eLFuvfee5WTk6Np06bp8ccfP2Ikr7p999136tWrlzp16qQBAwYEXyPFP99++60kacKECZo9e7aefPJJFRQUHHG7ffv2lXvb27dvV6dOnZSWlqaJEyfq22+/Da6vNMVDt9dff70++OADrVq1Stddd13It67OnTurbdu26tWrl15//XV9+eWXWrFihe66665K//mBQ4XzGi4e5XzwwQeVk5Ojxx9//KhTPc2bN9fXX3+tmTNnavPmzfrHP/6huXPnBq/ft2+fhg4dqrfffltfffWVli9frpUrV5b5RaFp06ZavHixdu7cqd27d4f1+JKTk3Xrrbfq5ptv1rRp07R582atXr1aWVlZmjZtWqnbGTRokK655hrNmzdPW7Zs0dtvv60XX3xRknTjjTdq69atGjZsmD7//HO9/PLLGj16tG655ZawXkfFAoGA+vXrpyeffFKLFi0KfmkKt+4FCxZoypQpeuGFF9SlSxfdfvvtGjRoUNj7piTNmzdXWlqaxowZo5ycHC1YsCBk9Ksiqmp/de7cWWeddZauueYarV69WqtWrdLgwYPVpUuXMqe5atWqpZ49e+ruu+/Whg0b1K9fv+B1lfkMa9q0qdauXavs7Gx99913JY44DR06VHl5ebriiiv00UcfaePGjXr++eeVnZ0t6eBo4rhx4/Too48qJydH69at09SpU/Xwww9Lkh555BHNnDlTn3/+uXJycjR79mw1bNgw/NHUcA9eufTSS+2SSy4p8bpVq1aZJFu1atUR1xUfhFPSz+Etgod777337IwzzrAaNWpY69atbc6cOWG1IB+qpAOiDj9YaP/+/fb3v//dmjZtavHx8dawYUO77LLLbO3ataWud+7cuVa8+3bu3Gm9evWyRo0aBdta//73vwcPqCqrBTk+Pr7Mtt5iu3fvDtln33//vfXs2dNq165t9evXt7vuussGDhwY8rjCbUH+5z//aY0bN7aaNWvaH/7wB/vhhx8qVauZ2ebNm02SPfjgg0dsVyUcPJiamhrSYZOTk2OXXXaZHXPMMZaYmGgtW7a0ESNGBA++2rNnjw0YMMCSkpKsQYMG9uCDD5Z48Oqh7bDFiluQ4+PjrUmTJke0TJd0vzPOOCOk8+Fw4Wy7rHU8++yzpb5OdEhLY9OmTcu83aH7MFwltQIX/5Rlx44d1r17d0tISLAmTZoEW2gPfdx5eXk2bNgwa9y4scXHx1taWpr179/fvv76azML/8DZww/uGz58uHXs2DF4+WivYbODnYnF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/fr1euihh3TMMcc4XZovjB8/Xk8++aQef/xxbdiwQQ8++KAmTJigxx57zOnSPOunn37SGWecoccff7zE6x988EE9/PDDevzxx7Vy5Uo1bNhQXbp0OeL0MV7DdA8q7dtvv1X9+vW1dOlSdejQwelyfGPv3r0666yz9M9//lP/8z//o9atW2vSpElOl+ULt99+u5YvX6533nnH6VJ86dJLL1WDBg30zDPPBJf98Y9/VFJSkp5//nkHK/OHQCCguXPnqlevXpIOjqI0btxYI0aM0G233Sbp4LnsGjRooPHjx2vw4MEOVls5jKSg0nJzcyVJderUcbgSfxkyZIi6d++uzp07O12K78yfP19t2rRR7969Vb9+fZ155pl6+umnnS7LN84//3wtXrxYOTk5kqRPPvlE7777ri655BKHK/OnLVu2aOfOneratWtwWUJCgjp27KgVK1Y4WFnlefYEg3AHM9Mtt9yi888/X61atXK6HN+YOXOmPv7444idsTnaffHFF3riiSd0yy236I477tCHH36om266SQkJCRo4cKDT5XnebbfdptzcXLVs2VKxsbEqLCzUfffdpyuvvNLp0nxp586dkqQGDRqELG/QoIG++uorJ0qqMoQUVMrQoUO1du1avfvuu06X4htbt27V8OHD9cYbb6hmWeddR4UVFRWpTZs2uv/++yVJZ555pj777DM98cQThJQqMGvWLE2fPl0zZszQqaeeqjVr1mjEiBFq3LixBg0a5HR5vnX4n9owM8//+Q1CCips2LBhmj9/vpYtW8YJHKvQqlWrtGvXLp199tnBZYWFhVq2bJkef/xx5efnKzY21sEKva9Ro0bKyMgIWXbKKadozpw5DlXkLyNHjtTtt9+uK664QpJ02mmn6auvvtK4ceMIKRHQsGFDSQdHVBo1ahRcvmvXriNGV7yGY1JQbmamoUOH6qWXXtJbb72lZs2aOV2Sr1x00UVat26d1qxZE/xp06aN+vfvrzVr1hBQqkD79u2PaJvPyclRenq6QxX5y88//6yYmNCPl9jYWFqQI6RZs2Zq2LChFi1aFFy2f/9+LV26VO3atXOwsspjJAXlNmTIEM2YMUMvv/yykpOTg/OhqampSkxMdLg670tOTj7i+J5atWqpbt26HPdTRW6++Wa1a9dO999/v/r06aMPP/xQkydP1uTJk50uzRd69Oih++67T02aNNGpp56q1atX6+GHH9Y111zjdGmetXfvXm3atCl4ecuWLVqzZo3q1KmjJk2aaMSIEbr//vt10kkn6aSTTtL999+vpKQk9evXz8Gqq4AB5SSpxJ+pU6c6XZpvdezY0YYPH+50Gb7yyiuvWKtWrSwhIcFatmxpkydPdrok38jLy7Phw4dbkyZNrGbNmvab3/zG7rzzTsvPz3e6NM9asmRJie+7gwYNMjOzoqIiGz16tDVs2NASEhKsQ4cOtm7dOmeLrgL8nRQAAOBKHJMCAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABciZACAABc6f8BhG/BuDVGrxwAAAAASUVORK5CYII=\n", + "text/plain": [ + "A 2-dimensional polyhedron in ZZ^2 defined as the convex hull of 6 vertices" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f2.newton_polytope()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "6664a215-547f-4ac9-8c6f-80e36416086d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z2 = ZetaFunctions(f2)\n", + "Z2.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4dff83c1-9e5f-4f29-8d39-eb9fa8df6b29", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of 3*x^10 - 3*x^7*y^3 - 3*x^7*y^2 + 3*x^6*y^3 - 6*x^3*y^6 + 2*y^9 + 3*x^5*y^3 - 6*x^3*y^5 - 3*x^2*y^6 + 6*y^8 + 3*x^7*z - 2*x^2*y^5 + 3*y^7 + 6*x^3*y^3*z - 3*y^6*z + 3*x^2*y^3*z - 6*y^5*z + z^3:\n", + " support points = [(10, 0, 0), (7, 3, 0), (7, 2, 0), (6, 3, 0), (3, 6, 0), (0, 9, 0), (5, 3, 0), (3, 5, 0), (2, 6, 0), (0, 8, 0), (7, 0, 1), (2, 5, 0), (0, 7, 0), (3, 3, 1), (0, 6, 1), (2, 3, 1), (0, 5, 1), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (10, 0, 0), (0, 7, 0), (5, 3, 0), (2, 5, 0)]\n", + " number of compact faces = 15\n", + " Facet 0: 3*x + 5*y + 10*z - 30 >= 0\n", + " Facet 1: 3*x + 3*y + 7*z - 21 >= 0\n", + " Facet 3: 6*x + 9*y + 19*z - 57 >= 0\n" + ] + } + ], + "source": [ + "Z.give_info_newton(compact=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "dcaa730a-6a42-4d4b-9ba9-b58a1d6791a5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Ideal (z, y, x) of Multivariate Polynomial Ring in x, y, z over Rational Field]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J = F.jacobian_ideal() + R.ideal(F)\n", + "J.minimal_associated_primes()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "4e01de37-328d-4c08-8520-774d3600ab3c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[Ideal (z, x) of Multivariate Polynomial Ring in x, y, z over Rational Field],\n", + " [Ideal (z, y) of Multivariate Polynomial Ring in x, y, z over Rational Field],\n", + " [Ideal (z, y) of Multivariate Polynomial Ring in x, y, z over Rational Field,\n", + " Ideal (z, x) of Multivariate Polynomial Ring in x, y, z over Rational Field]]" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = list(Z.get_polyfaces_dictionary(compact=True).keys())\n", + "A = [p for p in A if p.number_of_terms() > 2]\n", + "[p.jacobian_ideal().minimal_associated_primes() for p in A]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "2841278f-76c0-4a28-8fcf-554477c46b63", + "metadata": {}, + "outputs": [], + "source": [ + "F = z^3 + 3 * ((y^2 - x^3)^2 + x^2 * y^3 ) * z + 2 * ((y^2 - x^3)^3 + x^2 * y^5) " + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "3ed43a6e-b044-44d6-91e6-abf866241ccb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Ideal (z, y, x) of Multivariate Polynomial Ring in x, y, z over Rational Field]" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J = F.jacobian_ideal() + R.ideal(F)\n", + "J.minimal_associated_primes()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "5f9acb87-1385-408f-8652-0753fa786cb9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z = ZetaFunctions(F)\n", + "Z.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "id": "7bb3152b-8077-4a3e-884e-105a61e85057", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[-2*x^9 + 3*x^6*z + z^3,\n", + " 2*y^6 + 3*y^4*z + z^3,\n", + " (2) * (-x^3 + y^2)^3,\n", + " -2*x^9 + 6*x^6*y^2 - 6*x^3*y^4 + 3*x^6*z + 2*y^6 - 6*x^3*y^2*z + 3*y^4*z + z^3]" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = list(Z.get_polyfaces_dictionary(compact=True).keys())\n", + "[p.factor() for p in A if p.number_of_terms() > 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "c2b03e7c-533f-433c-88ce-4ba101ed8d33", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of -2*x^9 + 6*x^6*y^2 - 6*x^3*y^4 + 2*x^2*y^5 + 3*x^6*z + 2*y^6 - 6*x^3*y^2*z + 3*x^2*y^3*z + 3*y^4*z + z^3:\n", + " support points = [(9, 0, 0), (6, 2, 0), (3, 4, 0), (2, 5, 0), (6, 0, 1), (0, 6, 0), (3, 2, 1), (2, 3, 1), (0, 4, 1), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (9, 0, 0), (0, 6, 0)]\n", + " number of compact faces = 7\n", + " Facet 3: 2*x + 3*y + 6*z - 18 >= 0\n" + ] + } + ], + "source": [ + "Z.give_info_newton(compact=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "738d444a-b606-4691-b6fa-f88d085b0f0d", + "metadata": {}, + "outputs": [], + "source": [ + "dis = F.discriminant(z)(x=u, y=v)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "a81931d5-c668-466d-90f5-6d1d4a1cbcb1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-216) * (t - 1)^6" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(dis.monomial_coefficient(u^(3 * j) * v^(2 * (6 - j))) * t^j for j in (0 .. 6)).factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "3a619846-dc9b-48de-909a-ebd63188a4e3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnQAAAFfCAYAAADH6lGnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/G0lEQVR4nO3deViU9f7/8dfIjjAoJpsikCZuuaEVmvtukVQq7tixxZ9bueUXraPlKUwtbeFgeBKzMj0dpDDTtATMxBKV8hgCGu5wSDMR02F7//7wMMdhnYEZ5p6Z1+O65vKae+65788MzPjkMzP3qEREQEREREQWq4m5B0BEREREDcOgIyIiIrJwDDoiIiIiC8egIyIiIrJwDDoiIiIiC8egIyIiIrJwDDoiIiIiC8egIyIiIrJwDDoiIiIiC8ega0Rnz56FSqVCRkYGACAlJQUqlQp//PGHWcdVlxUrVqB79+6Nvt+BAwfihRdeMOk+Kv9M9KFSqfD5558bfSyNcXuVuO+6JCYmwt7eHu3bt0dBQYFJ9xUYGIj169cbdJ24uDj4+/ujSZMmWL9+faM9XjZv3oxmzZqZfD91Mdfzg6Wqz+9YZZV/9sb4GYgInn32WXh6ehr8nKgk9XlOtxY2GXSHDh2CnZ0dRo4cWee6JSUlWLJkCe6//340bdoUfn5+mDZtGi5fvtzgcfTp0wd5eXnw8PBo8LZMadGiRfj222/NPQwyoR07dmDlypX1vn7FHyc1nQYNGgTgTjjWtl5qaqrOdpOTkzFp0iQsX74cXl5eGDlyJAoLC3XWOXv2LGbMmIGgoCC4uLigbdu2WL58OYqLi+t9e/RVWFiIOXPmYMmSJbh06RKeffZZq368mOqPGTK/PXv2YPPmzfjyyy+Rl5eHLl261Lr+6dOn4e7ubtY/KqZPn47w8HCdZf7+/nqN3xrZZNBt2rQJc+fOxcGDB3H+/Pla1/3zzz9x7NgxvPzyyzh27Bh27NiB7OxsPPbYYw0eh6OjI3x8fKBSqRq8LVNyc3NDixYtzD0Mm2fKQPH09IS7u3u9r1/xx0nl0/vvvw+VSoVZs2YBuBOOldc5d+4cunTpgl69euHBBx/UbvPo0aN4/PHH8dZbb+Hll1/G119/DU9PTzz22GO4ffu2dr1Tp06hvLwc77//Pk6ePIl169Zhw4YNWLp0af3vED2dP38eJSUleOSRR+Dr6wtXV1c+XsginTlzBr6+vujTpw98fHxgb29f47olJSWYOHEi+vXr14gj/J+ysjKUl5dXe5mdnV2d47daYmOKiorE3d1dTp06JREREfLKK68YvI0ff/xRAMi5c+dqXe+HH36Q7t27i5OTk4SEhMiOHTsEgBw/flxERJKTkwWAXLt2TURE4uPjxcPDQ3bu3Cnt27cXFxcXefLJJ6WoqEg2b94sAQEB0qxZM5kzZ46UlpZq96PRaGTx4sXi5+cnrq6u8sADD0hycrL28ort7tmzRzp06CBNmzaVESNGyOXLl7XrJCcnS+/evcXV1VU8PDykT58+cvbsWRERWb58uXTr1k27bllZmbzyyivSqlUrcXR0lG7dusnu3bu1l+fm5goASUhIkIEDB4qLi4t07dpVDh06pF3nypUrMmHCBGnVqpW4uLhIly5dZOvWrTr334ABA+T555+v8f6tGNeGDRukdevW4uLiImPHjtXen4aM9fjx41JeXi5t27aVNWvW6OznxIkTolKp5PTp0yIiAkA2btwo4eHh4uLiIu3atZMvvvhC5zonT56UUaNGSdOmTcXLy0umTJkiv/32m/byoqIimTp1qjRt2lR8fHxk7dq1VW5vQECArFy5UiIjI0WtVsu0adNERORf//qXdOrUSRwdHSUgIEDWrl2rs++AgAB57bXX5KmnnhI3Nzfx9/eX999/v8b7sbr7uj7bqOyXX34RtVoty5Ytq3W9p59+Wry9veXChQvaZadOnRIfHx/58MMPdda9ffu2hIWFyWOPPSYlJSU1bnP16tUSFBRU637/85//yKOPPirOzs4SGBgoH3/8sQQEBMi6deu06/zxxx/yzDPPSMuWLcXd3V0GDRokGRkZInLncQVA55Sbm1vl8RIZGSljxoyRNWvWiI+Pj3h6esqsWbOkuLhYu05dj+GK/fn7+4uLi4uEh4fL2rVrxcPDo9bb+OKLL8p9990nLi4uEhQUJC+99JLOfjMyMmTgwIHi5uYm7u7u0rNnTzly5Ei12woICNC5rQEBASLyv8fhli1bJCAgQNRqtUREREhhYaH2uuXl5fLGG29IUFCQODs7S9euXeWzzz6rdey3b9+WxYsXS+vWrcXR0VHatWsn//jHP7SXp6SkSO/evcXR0VF8fHxkyZIlOr8TAwYMkLlz58rixYulefPm4u3tLcuX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\n", + "text/plain": [ + "A 2-dimensional polyhedron in ZZ^2 defined as the convex hull of 4 vertices" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dis1 = S(dis(u=(u + 1) * v^2, v=(u + 1) * v^3) / v^36 / (u + 1)^12)\n", + "dis1.newton_polytope()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "9c418e1b-299d-46bf-9889-4507ff6f46f8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-216) * (t^2 - t + 1/2)" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(dis1.monomial_coefficient(u^(3 * j) * v^(1 * (2 - j))) * t^j for j in (0 .. 2)).factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "11896d9b-c596-4407-a712-a1d175f9d2ee", + "metadata": {}, + "outputs": [], + "source": [ + "G1 = F(x=x * y)" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "c0fe5a40-c6a2-4172-85be-33dc74a1d755", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * v^4 * (u^6*v^2 - 2*u^3*v + u^2*v + 1),\n", + " (-2) * v^6 * (u^9*v^3 - 3*u^6*v^2 + 3*u^3*v - u^2*v - 1)]" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[G1.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "091e9112-9845-41a4-8172-31fd886568f3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(t^3 - 3*t + 2, t^3 - 3*t - 2)" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(t-1)^2*(t+2), (t+1)^2*(t-2)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "5f99e576-08d8-452d-ab03-0089116496b0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ZG1 = ZetaFunctions(G1)\n", + "ZG1.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "8151a088-51d1-42d0-a667-5b0167c53ebf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * u^6 * (u^2*v^4 + u^2*v^3 - 2*u*v^2 + 1),\n", + " (2) * u^9 * (u^3*v^6 + u^3*v^5 - 3*u^2*v^4 + 3*u*v^2 - 1)]" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G2 = F(y=x^2 * y)\n", + "[G2.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "bd3d9154-56c2-4160-a90c-1ce93eaff531", + "metadata": {}, + "outputs": [], + "source": [ + "G2a = F(y=x * y)(x=x * y)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "398f35d2-f57c-4ebc-bad4-4bdc19959203", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * u^4 * v^12 * (u^2 + u*v - 2*u + 1),\n", + " (2) * u^6 * v^18 * (-u^3 + 3*u^2 + u*v - 3*u + 1)]" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G3a = G2a(x=x * y)\n", + "[G3a.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "8a83a333-04a5-4a69-ae84-dd2710791e6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * v^6 * u^12 * (u*v^2 + v^2 - 2*v + 1),\n", + " (2) * v^9 * u^18 * (u*v^3 + v^3 - 3*v^2 + 3*v - 1)]" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G3b = G2a(y=x * y)\n", + "[G3b.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "0f663827-846c-4f41-bb71-23cc1ec20fbb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * (u + 1)^4 * v^12 * (u^2 + u*v + v),\n", + " (2) * (u + 1)^6 * v^18 * (-u^3 + u*v + v)]" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G3c = G2a(x=(x + 1) * y)\n", + "[G3c.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "d7670079-6b7b-46bd-bb32-0d19e572a1f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * v^13 * (u*v + 1)^4 * (u^2*v + u*v + 1),\n", + " (-2) * v^19 * (u*v + 1)^6 * (u^3*v^2 - u*v - 1)]" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G4 = G3c(x=x * y)\n", + "[G4.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "e497d9b6-e472-401e-8237-b0a49622022d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * u^13 * v^26 * (u*v + u + 1) * (u*v + 1)^4,\n", + " (-2) * u^19 * v^38 * (u*v + 1)^6 * (u^2*v - u*v - 1)]" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G5 = G3c(y=x * y)(x=x * y)\n", + "[G5.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "c828c6f3-7d1d-42f5-a027-b17aa1a9c0d6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * (u + 1)^4 * v^12 * u^38 * (u^2*v + u*v + 1),\n", + " (2) * (u + 1)^6 * v^18 * u^57 * (u*v + v - 1)]" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G6 = G3c(y=x^3 * y)\n", + "[G6.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "5519db2f-8a98-420a-b0e6-d2a544e78cb4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (3) * (u + 1)^4 * (v + 1)^12 * u^38 * (u^2*v + u^2 + u*v + u + 1),\n", + " (2) * (u + 1)^6 * (v + 1)^18 * u^57 * (u*v + u + v)]" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G7 = G6(y=y + 1)\n", + "[G7.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "931a99a3-15dc-4947-9b9b-5452b3c56b14", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b9f4aa86-1fb1-4c5d-b17e-2ec03b691c5f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "b549c701-c6db-4183-8f43-05d4f1b045c3", + "metadata": {}, + "outputs": [], + "source": [ + "F = z^3 - 3 * ((y^2 - x^3)^2 + x^2 * y^3 + x^7 + y^5 ) * z + 2 * ((y^2 - x^3)^3 + x^2 * y^5) " + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "363c3f2c-0fc1-44fd-82af-12f772cc3667", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Ideal (z, y, x) of Multivariate Polynomial Ring in x, y, z over Rational Field]" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J = F.jacobian_ideal() + R.ideal(F)\n", + "J.minimal_associated_primes()" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "85233ba7-8097-4a08-af63-a15d1da61731", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z = ZetaFunctions(F)\n", + "Z.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "83ad77a2-75de-4fad-ad52-4fa8d4c4718c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(-2*x^3 + z) * (x^3 + z)^2,\n", + " (2*y^2 + z) * (-y^2 + z)^2,\n", + " (2) * (-x^3 + y^2)^3,\n", + " (-2*x^3 + 2*y^2 + z) * (x^3 - y^2 + z)^2]" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = list(Z.get_polyfaces_dictionary(compact=True).keys())\n", + "[p.factor() for p in A if p.number_of_terms() > 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "9e9ec64f-5496-4bf1-9889-e1a0cd03b2ce", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of -2*x^9 + 6*x^6*y^2 - 3*x^7*z - 6*x^3*y^4 + 2*x^2*y^5 - 3*x^6*z + 2*y^6 + 6*x^3*y^2*z - 3*x^2*y^3*z - 3*y^5*z - 3*y^4*z + z^3:\n", + " support points = [(9, 0, 0), (6, 2, 0), (7, 0, 1), (3, 4, 0), (2, 5, 0), (6, 0, 1), (0, 6, 0), (3, 2, 1), (2, 3, 1), (0, 5, 1), (0, 4, 1), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (9, 0, 0), (0, 6, 0)]\n", + " number of compact faces = 7\n", + " Facet 1: 2*x + 3*y + 6*z - 18 >= 0\n" + ] + } + ], + "source": [ + "Z.give_info_newton(compact=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "bff0dca4-38e4-4820-9d1a-168279bba601", + "metadata": {}, + "outputs": [], + "source": [ + "G1 = F(x=x * y)" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "id": "d61d80f4-804a-4605-8755-53078b829718", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(2*y^2 + z) * (-y^2 + z)^2]" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ZG1 = ZetaFunctions(G1)\n", + "A = list(ZG1.get_polyfaces_dictionary(compact=True).keys())\n", + "[p.factor() for p in A if p.number_of_terms() > 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "id": "5c1b90b6-fb18-4a63-b488-025289b9c0e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (-3) * v^4 * (u^7*v^3 + u^6*v^2 - 2*u^3*v + u^2*v + v + 1),\n", + " (-2) * v^6 * (u^9*v^3 - 3*u^6*v^2 + 3*u^3*v - u^2*v - 1)]" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[G1.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "id": "0bda6c5a-09d1-4da4-b1cc-6d1b142af8a7", + "metadata": {}, + "outputs": [], + "source": [ + "H1 = G1(z=z + y^2) " + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "id": "93985af6-ede0-4eeb-ab23-b296e9475812", + "metadata": {}, + "outputs": [], + "source": [ + "ZH1 = ZetaFunctions(H1)\n", + "# ZH1.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "id": "b8b06f67-d028-435f-a0ad-ff069032edf5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 127, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = list(ZH1.get_polyfaces_dictionary(compact=True).keys())\n", + "[p.factor() for p in A if p.number_of_terms() > 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "id": "f6290df5-6ac0-48e3-90ed-d7669c80c42f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of -2*x^9*y^9 - 3*x^7*y^9 - 3*x^7*y^7*z + 3*x^6*y^8 - 3*x^6*y^6*z - x^2*y^7 + 6*x^3*y^5*z - 3*x^2*y^5*z - 3*y^7 - 3*y^5*z + 3*y^2*z^2 + z^3:\n", + " support points = [(9, 9, 0), (7, 9, 0), (7, 7, 1), (6, 8, 0), (6, 6, 1), (2, 7, 0), (3, 5, 1), (2, 5, 1), (0, 7, 0), (0, 5, 1), (0, 2, 2), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (0, 2, 2), (0, 7, 0)]\n", + " number of compact faces = 5\n" + ] + } + ], + "source": [ + "ZH1.give_info_newton(compact=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "19bd0eac-30d6-44ab-8a22-b4bd4e0670f7", + "metadata": {}, + "outputs": [], + "source": [ + "G1a = F(y=x * y)" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "8cc3bbeb-0af3-4981-b871-fa538b4ef35f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (-3) * u^6 * (u^4*v^5 + u^2*v^4 + u^2*v^3 - 2*u*v^2 + u + 1),\n", + " (2) * u^9 * (u^3*v^6 + u^3*v^5 - 3*u^2*v^4 + 3*u*v^2 - 1)]" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G2 = G1a(y=x * y)\n", + "[G2.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "id": "7124eb23-b08d-4dd5-911c-37a62614014b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H2 = G2(z=z - x^3) \n", + "ZH2 = ZetaFunctions(H2)\n", + "A = list(ZH2.get_polyfaces_dictionary(compact=True).keys())\n", + "[p.factor() for p in A if p.number_of_terms() > 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "94329753-721a-4c4c-b34b-6e6519dcd455", + "metadata": {}, + "outputs": [], + "source": [ + "G2a = G1a(x=x * y)" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "id": "1f336df6-a229-49c7-805e-db418bb44c61", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (-3) * u^4 * v^12 * (u^3*v^2 + u*v^3 + u^2 + u*v - 2*u + 1),\n", + " (2) * u^6 * v^18 * (-u^3 + 3*u^2 + u*v - 3*u + 1)]" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G3 = G2a(x=x * y)\n", + "[G3.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "id": "0921c5d4-5450-4151-ab73-353050b0717d", + "metadata": {}, + "outputs": [], + "source": [ + "H3 = G3(z=z + x^2 * y^6 - x^3 * y^6) " + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "id": "4b21a72e-00ec-421b-b12b-64ba829a2876", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H3.monomial_coefficient(z^2 * x^2 * y^6)" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "id": "77084b78-853a-414c-a276-853f700721f4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 156, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "ZH3 = ZetaFunctions(H3)\n", + "A = list(ZH3.get_polyfaces_dictionary(compact=True).keys())\n", + "[p.factor() for p in A if p.number_of_terms() > 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "id": "b3588587-fd65-4506-af93-add95db17be2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1,\n", + " (-3) * v^6 * u^12 * (u^3*v^4 + u^2*v + u*v^2 + v^2 - 2*v + 1),\n", + " (2) * v^9 * u^18 * (u*v^3 + v^3 - 3*v^2 + 3*v - 1)]" + ] + }, + "execution_count": 138, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G4 = G2a(y=x * y)\n", + "[G4.coefficient({z: j})(x=u, y=v).factor() for j in (3, 1, 0)]" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "99f714fe-4c27-4c72-ad1b-c9efbfe4fec4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(-3) * y^3 * x^6 * (-x^14*y^7 - x^13*y^8 + z^2)]" + ] + }, + "execution_count": 160, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H4 = G4(z=z - x^6 * y^3 + x^6 * y^4) \n", + "ZH4 = ZetaFunctions(H4)\n", + "A = list(ZH4.get_polyfaces_dictionary(compact=True).keys())\n", + "[p.factor() for p in A if p.number_of_terms() > 2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a235ca1-1d84-4cc7-aa26-e361b44eb701", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 10.2", + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/detalleestratos.ipynb b/detalleestratos.ipynb new file mode 100644 index 0000000..b50653e --- /dev/null +++ b/detalleestratos.ipynb @@ -0,0 +1,1184 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 39, + "id": "b7e27f4d-8435-426c-a780-06e2e045718d", + "metadata": {}, + "outputs": [], + "source": [ + "reset()\n", + "load('ZetaFunctionsNewtonND.py')\n", + "R. = QQ[]\n", + "F=z^3 -3*(x^2*y^2 + x^5 + y^5)*z + 2*x^3*y^3 + x^7 + y^7\n", + "D=F.discriminant(z)\n", + "ZF = ZetaFunctions(F)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "c8dfedd2-f16f-4e50-acf7-e14b44374c6c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ZF.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "8786b09c-f4d6-440a-be82-30a26e6530f9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "108*x^15 + 324*x^10*y^5 + 324*x^5*y^10 + 108*y^15 - 27*x^14 + 324*x^12*y^2 + 594*x^7*y^7 + 324*x^2*y^12 - 27*y^14 - 108*x^10*y^3 + 324*x^9*y^4 + 324*x^4*y^9 - 108*x^3*y^10" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "a5ecaeee-9dc0-4491-8312-4ca22b364e2b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of 108*x^15 + 324*x^10*y^5 + 324*x^5*y^10 + 108*y^15 - 27*x^14 + 324*x^12*y^2 + 594*x^7*y^7 + 324*x^2*y^12 - 27*y^14 - 108*x^10*y^3 + 324*x^9*y^4 + 324*x^4*y^9 - 108*x^3*y^10:\n", + " support points = [(15, 0, 0), (10, 5, 0), (5, 10, 0), (0, 15, 0), (14, 0, 0), (12, 2, 0), (7, 7, 0), (2, 12, 0), (0, 14, 0), (10, 3, 0), (9, 4, 0), (4, 9, 0), (3, 10, 0)]\n", + " vertices = [(0, 14, 0), (14, 0, 0), (3, 10, 0), (10, 3, 0)]\n", + " number of proper faces = 19\n", + " Facet 0: 3*x + 4*y - 42 >= 0\n", + " Facet 1: x + y - 13 >= 0\n", + " Facet 2: x >= 0\n", + " Facet 3: 4*x + 3*y - 42 >= 0\n", + " Facet 4: y >= 0\n", + " Facet 5: z >= 0\n" + ] + } + ], + "source": [ + "d = ZetaFunctions(D)\n", + "d.give_info_newton()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "90017032-05aa-409e-bb72-75d8af9f5ff3", + "metadata": {}, + "outputs": [], + "source": [ + "F1=F(x=x*y)\n", + "D1=D(x=x*y)/y^13\n", + "F1b=F(y=x*y)\n", + "D1b=D(y=x*y)/x^13\n", + "ZF1 = ZetaFunctions(F1)\n", + "ZF1b = ZetaFunctions(F1b)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "d0bbe6c1-c702-44d1-add6-b2f4ce8097ed", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((-108) * (x + 1) * (x^6 - 4*x^5 + 4*x^4 - 4*x^3 + 4*x^2 - 4*x + 1),\n", + " (-108) * (y + 1) * (y^6 - 4*y^5 + 4*y^4 - 4*y^3 + 4*y^2 - 4*y + 1))" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d1=D1(y=0)\n", + "d1b=D1b(x=0)\n", + "(d1/x^3).factor(),(d1b/y^3).factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "6c34d700-f2ef-45f6-87c2-56d03b78f04c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(True, True)" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F1t=F1(x=x+1)\n", + "F1bt=F1b(y=y+1)\n", + "ZF1t = ZetaFunctions(F1t)\n", + "ZF1bt = ZetaFunctions(F1bt)\n", + "ZF1t.is_newton_degenerated(local=True), ZF1bt.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "53529479-e3ee-4d7f-ba62-afd9e7eeffb3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of x^7*y^7 + 7*x^6*y^7 + 21*x^5*y^7 + 35*x^4*y^7 - 3*x^5*y^5*z + 35*x^3*y^7 - 15*x^4*y^5*z + 2*x^3*y^6 + 21*x^2*y^7 - 30*x^3*y^5*z + 6*x^2*y^6 + 7*x*y^7 - 30*x^2*y^5*z + 6*x*y^6 + 2*y^7 - 3*x^2*y^4*z - 15*x*y^5*z + 2*y^6 - 6*x*y^4*z - 6*y^5*z - 3*y^4*z + z^3:\n", + " support points = [(7, 7, 0), (6, 7, 0), (5, 7, 0), (4, 7, 0), (5, 5, 1), (3, 7, 0), (4, 5, 1), (3, 6, 0), (2, 7, 0), (3, 5, 1), (2, 6, 0), (1, 7, 0), (2, 5, 1), (1, 6, 0), (0, 7, 0), (2, 4, 1), (1, 5, 1), (0, 6, 0), (1, 4, 1), (0, 5, 1), (0, 4, 1), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (0, 6, 0)]\n", + " number of proper faces = 11\n", + " Facet 0: x >= 0\n", + " Facet 1: y >= 0\n", + " Facet 2: y + 2*z - 6 >= 0\n", + " Facet 3: z >= 0\n" + ] + } + ], + "source": [ + "ZF1t.give_info_newton()" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "3c518be7-15e0-462d-9546-68094910993b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of x^7*y^7 + 7*x^7*y^6 + 21*x^7*y^5 + 35*x^7*y^4 - 3*x^5*y^5*z + 35*x^7*y^3 - 15*x^5*y^4*z + 21*x^7*y^2 + 2*x^6*y^3 - 30*x^5*y^3*z + 7*x^7*y + 6*x^6*y^2 - 30*x^5*y^2*z + 2*x^7 + 6*x^6*y - 15*x^5*y*z - 3*x^4*y^2*z + 2*x^6 - 6*x^5*z - 6*x^4*y*z - 3*x^4*z + z^3:\n", + " support points = [(7, 7, 0), (7, 6, 0), (7, 5, 0), (7, 4, 0), (5, 5, 1), (7, 3, 0), (5, 4, 1), (7, 2, 0), (6, 3, 0), (5, 3, 1), (7, 1, 0), (6, 2, 0), (5, 2, 1), (7, 0, 0), (6, 1, 0), (5, 1, 1), (4, 2, 1), (6, 0, 0), (5, 0, 1), (4, 1, 1), (4, 0, 1), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (6, 0, 0)]\n", + " number of proper faces = 11\n", + " Facet 0: x + 2*z - 6 >= 0\n", + " Facet 1: x >= 0\n", + " Facet 2: y >= 0\n", + " Facet 3: z >= 0\n" + ] + } + ], + "source": [ + "ZF1bt.give_info_newton()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "72e1d393-5e3d-4453-a7f8-8b67cebc291a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2*y^2 + z) * (-y^2 + z)^2" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cF1t = 2*y^6 - 3*y^4*z + z^3\n", + "cF1t.factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "4c62a268-6bc1-4470-aa1d-b8feb75f38b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NF1t=F1t(z=z+y^2)\n", + "ZNF1t = ZetaFunctions(NF1t)\n", + "ZNF1t.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "83481949-7133-4292-ad20-516a6dd7db82", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of x^7*y^7 + 7*x^6*y^7 + 18*x^5*y^7 + 20*x^4*y^7 - 3*x^5*y^5*z + 5*x^3*y^7 - 15*x^4*y^5*z + 2*x^3*y^6 - 9*x^2*y^7 - 30*x^3*y^5*z + 3*x^2*y^6 - 8*x*y^7 - 30*x^2*y^5*z - 4*y^7 - 3*x^2*y^4*z - 15*x*y^5*z - 6*x*y^4*z - 6*y^5*z + 3*y^2*z^2 + z^3:\n", + " support points = [(7, 7, 0), (6, 7, 0), (5, 7, 0), (4, 7, 0), (5, 5, 1), (3, 7, 0), (4, 5, 1), (3, 6, 0), (2, 7, 0), (3, 5, 1), (2, 6, 0), (1, 7, 0), (2, 5, 1), (0, 7, 0), (2, 4, 1), (1, 5, 1), (1, 4, 1), (0, 5, 1), (0, 2, 2), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (0, 2, 2), (2, 6, 0), (0, 7, 0)]\n", + " number of proper faces = 17\n", + " Facet 0: y >= 0\n", + " Facet 1: x >= 0\n", + " Facet 2: x + 2*y + 5*z - 14 >= 0\n", + " Facet 3: y + 2*z - 6 >= 0\n", + " Facet 4: z >= 0\n" + ] + } + ], + "source": [ + "ZNF1t.give_info_newton()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "fbe580cd-1e04-4020-ac10-ff94f1b5f4fe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "Graphics3d Object" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ZNF1t.newton_plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "a45f7abe-34ff-40ad-8138-fa0f4b93c479", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3) * y^2 * (-x*y^2 + z)^2" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "aux=3*x^2*y^6 - 6*x*y^4*z + 3*y^2*z^2\n", + "aux.factor()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "15a419b5-6ca0-48a2-b77e-11d039aa52cc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NNF1t=NF1t(z=z+x*y^2)\n", + "ZNNF1t = ZetaFunctions(NNF1t)\n", + "ZNNF1t.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "64631350-3ee6-40db-a55e-f1847f8be665", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of x^7*y^7 + 4*x^6*y^7 + 3*x^5*y^7 - 10*x^4*y^7 - 3*x^5*y^5*z - 25*x^3*y^7 - 15*x^4*y^5*z - 24*x^2*y^7 - 30*x^3*y^5*z - 14*x*y^7 - 30*x^2*y^5*z - 4*y^7 - 15*x*y^5*z - 6*y^5*z + 3*x*y^2*z^2 + 3*y^2*z^2 + z^3:\n", + " support points = [(7, 7, 0), (6, 7, 0), (5, 7, 0), (4, 7, 0), (5, 5, 1), (3, 7, 0), (4, 5, 1), (2, 7, 0), (3, 5, 1), (1, 7, 0), (2, 5, 1), (0, 7, 0), (1, 5, 1), (0, 5, 1), (1, 2, 2), (0, 2, 2), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (0, 2, 2), (0, 7, 0)]\n", + " number of proper faces = 15\n", + " Facet 0: y + 2*z - 6 >= 0\n", + " Facet 1: y >= 0\n", + " Facet 2: x >= 0\n", + " Facet 3: z >= 0\n", + " Facet 4: 2*y + 5*z - 14 >= 0\n" + ] + } + ], + "source": [ + "ZNNF1t.give_info_newton()" + ] + }, + { + "cell_type": "markdown", + "id": "d018605b-b591-496e-b279-3f668a118e79", + "metadata": {}, + "source": [ + "Traslaccion de un golpe" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "094a930d-b77d-416b-a4e5-0257f8dc23ce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GF1t=F1t(z=z+y^2+x*y^2)\n", + "ZGF1t = ZetaFunctions(GF1t)\n", + "ZGF1t.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "6c768f51-4886-4e20-83fa-a17ea1ab3e53", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of x^7*y^7 + 4*x^6*y^7 + 3*x^5*y^7 - 10*x^4*y^7 - 3*x^5*y^5*z - 25*x^3*y^7 - 15*x^4*y^5*z - 24*x^2*y^7 - 30*x^3*y^5*z - 14*x*y^7 - 30*x^2*y^5*z - 4*y^7 - 15*x*y^5*z - 6*y^5*z + 3*x*y^2*z^2 + 3*y^2*z^2 + z^3:\n", + " support points = [(7, 7, 0), (6, 7, 0), (5, 7, 0), (4, 7, 0), (5, 5, 1), (3, 7, 0), (4, 5, 1), (2, 7, 0), (3, 5, 1), (1, 7, 0), (2, 5, 1), (0, 7, 0), (1, 5, 1), (0, 5, 1), (1, 2, 2), (0, 2, 2), (0, 0, 3)]\n", + " vertices = [(0, 0, 3), (0, 2, 2), (0, 7, 0)]\n", + " number of proper faces = 15\n", + " Facet 0: y + 2*z - 6 >= 0\n", + " Facet 1: y >= 0\n", + " Facet 2: x >= 0\n", + " Facet 3: z >= 0\n", + " Facet 4: 2*y + 5*z - 14 >= 0\n" + ] + } + ], + "source": [ + "ZGF1t.give_info_newton()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "588205d1-e7c5-4a6b-87f6-9128b5a2a2eb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8cd120e8-7440-4453-927e-6c8137d680c4", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "69465e5c-28b4-4f1b-b6a7-4132f41b4d43", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "a097d5ea-0585-44b7-a912-04f36be90d51", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F1=z^3 -3*(((y^2+2*x^3)^2+x^5*y)*(((x^2+y^3)^2+y^7*x)))*z + 2*((y^4*x^13)*(x^4*y^13)) + x^40 + y^40\n", + "D1=F1.discriminant(z)\n", + "ZD1 = ZetaFunctions(D1)\n", + "ZD1.is_newton_degenerated()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "612d96ca-666e-4dcb-9ba5-84c705ecdd8e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of -27*x^80 - 54*x^40*y^40 - 27*y^80 - 108*x^57*y^17 - 108*x^17*y^57 - 108*x^34*y^34 + 6912*x^21*y^21 + 5184*x^20*y^22 + 1296*x^19*y^23 + 108*x^18*y^24 + 20736*x^18*y^23 + 10368*x^17*y^24 + 1296*x^16*y^25 + 20736*x^20*y^20 + 15552*x^19*y^21 + 3888*x^18*y^22 + 324*x^17*y^23 + 25920*x^15*y^25 + 7776*x^14*y^26 + 324*x^13*y^27 + 41472*x^22*y^17 + 31104*x^21*y^18 + 7776*x^20*y^19 + 648*x^19*y^20 + 62208*x^17*y^22 + 31104*x^16*y^23 + 3888*x^15*y^24 + 17280*x^12*y^27 + 2592*x^11*y^28 + 20736*x^24*y^14 + 15552*x^23*y^15 + 3888*x^22*y^16 + 324*x^21*y^17 + 145152*x^19*y^19 + 77760*x^18*y^20 + 11664*x^17*y^21 + 324*x^16*y^22 + 77760*x^14*y^24 + 23328*x^13*y^25 + 972*x^12*y^26 + 6480*x^9*y^29 + 324*x^8*y^30 + 145152*x^21*y^16 + 93312*x^20*y^17 + 19440*x^19*y^18 + 1296*x^18*y^19 + 217728*x^16*y^21 + 77760*x^15*y^22 + 5832*x^14*y^23 + 51840*x^11*y^26 + 7776*x^10*y^27 + 1296*x^6*y^31 + 124416*x^23*y^13 + 93312*x^22*y^14 + 23328*x^21*y^15 + 1944*x^20*y^16 + 333504*x^18*y^18 + 152928*x^17*y^19 + 17820*x^16*y^20 + 108*x^15*y^21 + 181440*x^13*y^23 + 38880*x^12*y^24 + 972*x^11*y^25 + 19440*x^8*y^28 + 972*x^7*y^29 + 108*x^3*y^33 + 82944*x^25*y^10 + 62208*x^24*y^11 + 15552*x^23*y^12 + 1296*x^22*y^13 + 414720*x^20*y^15 + 217728*x^19*y^16 + 31104*x^18*y^17 + 648*x^17*y^18 + 383616*x^15*y^20 + 111456*x^14*y^21 + 5184*x^13*y^22 + 90720*x^10*y^25 + 9720*x^9*y^26 + 3888*x^5*y^30 + 20736*x^27*y^7 + 15552*x^26*y^8 + 3888*x^25*y^9 + 324*x^24*y^10 + 352512*x^22*y^12 + 202176*x^21*y^13 + 34992*x^20*y^14 + 1620*x^19*y^15 + 590976*x^17*y^17 + 202176*x^16*y^18 + 13608*x^15*y^19 + 252720*x^12*y^22 + 39852*x^11*y^23 + 324*x^10*y^24 + 27216*x^7*y^27 + 972*x^6*y^28 + 324*x^2*y^32 + 200448*x^24*y^9 + 134784*x^23*y^10 + 29808*x^22*y^11 + 2160*x^21*y^12 + 622080*x^19*y^14 + 248832*x^18*y^15 + 23328*x^17*y^16 + 466560*x^14*y^19 + 93312*x^13*y^20 + 1944*x^12*y^21 + 98928*x^9*y^24 + 6480*x^8*y^25 + 4536*x^4*y^29 + 103680*x^26*y^6 + 77760*x^25*y^7 + 19440*x^24*y^8 + 1620*x^23*y^9 + 492480*x^21*y^11 + 230688*x^20*y^12 + 26892*x^19*y^13 + 596160*x^16*y^16 + 147744*x^15*y^17 + 4860*x^14*y^18 + 220320*x^11*y^21 + 21384*x^10*y^22 + 22356*x^6*y^26 + 324*x^5*y^27 + 324*x*y^31 + 41472*x^28*y^3 + 31104*x^27*y^4 + 7776*x^26*y^5 + 648*x^25*y^6 + 311040*x^23*y^8 + 155520*x^22*y^9 + 19440*x^21*y^10 + 570240*x^18*y^13 + 163296*x^17*y^14 + 6480*x^16*y^15 + 336960*x^13*y^18 + 42768*x^12*y^19 + 62208*x^8*y^23 + 1944*x^7*y^24 + 2592*x^3*y^28 + 6912*x^30 + 5184*x^29*y + 1296*x^28*y^2 + 108*x^27*y^3 + 124416*x^25*y^5 + 62208*x^24*y^6 + 7776*x^23*y^7 + 388800*x^20*y^10 + 116640*x^19*y^11 + 4860*x^18*y^12 + 365040*x^15*y^15 + 52812*x^14*y^16 + 112752*x^10*y^20 + 4860*x^9*y^21 + 9720*x^5*y^25 + 108*y^30 + 20736*x^27*y^2 + 10368*x^26*y^3 + 1296*x^25*y^4 + 155520*x^22*y^7 + 46656*x^21*y^8 + 1944*x^20*y^9 + 259200*x^17*y^12 + 38880*x^16*y^13 + 133488*x^12*y^17 + 6480*x^11*y^18 + 20736*x^7*y^22 + 648*x^2*y^27 + 25920*x^24*y^4 + 7776*x^23*y^5 + 324*x^22*y^6 + 103680*x^19*y^9 + 15552*x^18*y^10 + 97200*x^14*y^14 + 4860*x^13*y^15 + 26244*x^9*y^19 + 1620*x^4*y^24 + 17280*x^21*y^6 + 2592*x^20*y^7 + 38880*x^16*y^11 + 1944*x^15*y^12 + 19440*x^11*y^16 + 2160*x^6*y^21 + 6480*x^18*y^8 + 324*x^17*y^9 + 7776*x^13*y^13 + 1620*x^8*y^18 + 1296*x^15*y^10 + 648*x^10*y^15 + 108*x^12*y^12:\n", + " support points = [(80, 0, 0), (40, 40, 0), (0, 80, 0), (57, 17, 0), (17, 57, 0), (34, 34, 0), (21, 21, 0), (20, 22, 0), (19, 23, 0), (18, 24, 0), (18, 23, 0), (17, 24, 0), (16, 25, 0), (20, 20, 0), (19, 21, 0), (18, 22, 0), (17, 23, 0), (15, 25, 0), (14, 26, 0), (13, 27, 0), (22, 17, 0), (21, 18, 0), (20, 19, 0), (19, 20, 0), (17, 22, 0), (16, 23, 0), (15, 24, 0), (12, 27, 0), (11, 28, 0), (24, 14, 0), (23, 15, 0), (22, 16, 0), (21, 17, 0), (19, 19, 0), (18, 20, 0), (17, 21, 0), (16, 22, 0), (14, 24, 0), (13, 25, 0), (12, 26, 0), (9, 29, 0), (8, 30, 0), (21, 16, 0), (20, 17, 0), (19, 18, 0), (18, 19, 0), (16, 21, 0), (15, 22, 0), (14, 23, 0), (11, 26, 0), (10, 27, 0), (6, 31, 0), (23, 13, 0), (22, 14, 0), (21, 15, 0), (20, 16, 0), (18, 18, 0), (17, 19, 0), (16, 20, 0), (15, 21, 0), (13, 23, 0), (12, 24, 0), (11, 25, 0), (8, 28, 0), (7, 29, 0), (3, 33, 0), (25, 10, 0), (24, 11, 0), (23, 12, 0), (22, 13, 0), (20, 15, 0), (19, 16, 0), (18, 17, 0), (17, 18, 0), (15, 20, 0), (14, 21, 0), (13, 22, 0), (10, 25, 0), (9, 26, 0), (5, 30, 0), (27, 7, 0), (26, 8, 0), (25, 9, 0), (24, 10, 0), (22, 12, 0), (21, 13, 0), (20, 14, 0), (19, 15, 0), (17, 17, 0), (16, 18, 0), (15, 19, 0), (12, 22, 0), (11, 23, 0), (10, 24, 0), (7, 27, 0), (6, 28, 0), (2, 32, 0), (24, 9, 0), (23, 10, 0), (22, 11, 0), (21, 12, 0), (19, 14, 0), (18, 15, 0), (17, 16, 0), (14, 19, 0), (13, 20, 0), (12, 21, 0), (9, 24, 0), (8, 25, 0), (4, 29, 0), (26, 6, 0), (25, 7, 0), (24, 8, 0), (23, 9, 0), (21, 11, 0), (20, 12, 0), (19, 13, 0), (16, 16, 0), (15, 17, 0), (14, 18, 0), (11, 21, 0), (10, 22, 0), (6, 26, 0), (5, 27, 0), (1, 31, 0), (28, 3, 0), (27, 4, 0), (26, 5, 0), (25, 6, 0), (23, 8, 0), (22, 9, 0), (21, 10, 0), (18, 13, 0), (17, 14, 0), (16, 15, 0), (13, 18, 0), (12, 19, 0), (8, 23, 0), (7, 24, 0), (3, 28, 0), (30, 0, 0), (29, 1, 0), (28, 2, 0), (27, 3, 0), (25, 5, 0), (24, 6, 0), (23, 7, 0), (20, 10, 0), (19, 11, 0), (18, 12, 0), (15, 15, 0), (14, 16, 0), (10, 20, 0), (9, 21, 0), (5, 25, 0), (0, 30, 0), (27, 2, 0), (26, 3, 0), (25, 4, 0), (22, 7, 0), (21, 8, 0), (20, 9, 0), (17, 12, 0), (16, 13, 0), (12, 17, 0), (11, 18, 0), (7, 22, 0), (2, 27, 0), (24, 4, 0), (23, 5, 0), (22, 6, 0), (19, 9, 0), (18, 10, 0), (14, 14, 0), (13, 15, 0), (9, 19, 0), (4, 24, 0), (21, 6, 0), (20, 7, 0), (16, 11, 0), (15, 12, 0), (11, 16, 0), (6, 21, 0), (18, 8, 0), (17, 9, 0), (13, 13, 0), (8, 18, 0), (15, 10, 0), (10, 15, 0), (12, 12, 0)]\n", + " vertices = [(0, 30, 0), (30, 0, 0), (12, 12, 0)]\n", + " number of proper faces = 15\n", + " Facet 0: 2*x + 3*y - 60 >= 0\n", + " Facet 1: 3*x + 2*y - 60 >= 0\n", + " Facet 2: x >= 0\n", + " Facet 3: y >= 0\n", + " Facet 4: z >= 0\n" + ] + } + ], + "source": [ + "ZD1.give_info_newton()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bbee0079-f404-4ad3-b8c6-b95dc34fdcf1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "beea9f68-34eb-4fbf-95c7-709e523b21b4", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "b07929c2-0908-4573-8af4-c72ae8a175d1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of -27*x^80 - 54*x^40*y^40 - 27*y^80 - 108*x^57*y^17 - 108*x^17*y^57 - 108*x^34*y^34 + 6912*x^21*y^21 + 5184*x^20*y^22 + 1296*x^19*y^23 + 108*x^18*y^24 + 20736*x^18*y^23 + 10368*x^17*y^24 + 1296*x^16*y^25 + 20736*x^20*y^20 + 15552*x^19*y^21 + 3888*x^18*y^22 + 324*x^17*y^23 + 25920*x^15*y^25 + 7776*x^14*y^26 + 324*x^13*y^27 + 41472*x^22*y^17 + 31104*x^21*y^18 + 7776*x^20*y^19 + 648*x^19*y^20 + 62208*x^17*y^22 + 31104*x^16*y^23 + 3888*x^15*y^24 + 17280*x^12*y^27 + 2592*x^11*y^28 + 20736*x^24*y^14 + 15552*x^23*y^15 + 3888*x^22*y^16 + 324*x^21*y^17 + 145152*x^19*y^19 + 77760*x^18*y^20 + 11664*x^17*y^21 + 324*x^16*y^22 + 77760*x^14*y^24 + 23328*x^13*y^25 + 972*x^12*y^26 + 6480*x^9*y^29 + 324*x^8*y^30 + 145152*x^21*y^16 + 93312*x^20*y^17 + 19440*x^19*y^18 + 1296*x^18*y^19 + 217728*x^16*y^21 + 77760*x^15*y^22 + 5832*x^14*y^23 + 51840*x^11*y^26 + 7776*x^10*y^27 + 1296*x^6*y^31 + 124416*x^23*y^13 + 93312*x^22*y^14 + 23328*x^21*y^15 + 1944*x^20*y^16 + 333504*x^18*y^18 + 152928*x^17*y^19 + 17820*x^16*y^20 + 108*x^15*y^21 + 181440*x^13*y^23 + 38880*x^12*y^24 + 972*x^11*y^25 + 19440*x^8*y^28 + 972*x^7*y^29 + 108*x^3*y^33 + 82944*x^25*y^10 + 62208*x^24*y^11 + 15552*x^23*y^12 + 1296*x^22*y^13 + 414720*x^20*y^15 + 217728*x^19*y^16 + 31104*x^18*y^17 + 648*x^17*y^18 + 383616*x^15*y^20 + 111456*x^14*y^21 + 5184*x^13*y^22 + 90720*x^10*y^25 + 9720*x^9*y^26 + 3888*x^5*y^30 + 20736*x^27*y^7 + 15552*x^26*y^8 + 3888*x^25*y^9 + 324*x^24*y^10 + 352512*x^22*y^12 + 202176*x^21*y^13 + 34992*x^20*y^14 + 1620*x^19*y^15 + 590976*x^17*y^17 + 202176*x^16*y^18 + 13608*x^15*y^19 + 252720*x^12*y^22 + 39852*x^11*y^23 + 324*x^10*y^24 + 27216*x^7*y^27 + 972*x^6*y^28 + 324*x^2*y^32 + 200448*x^24*y^9 + 134784*x^23*y^10 + 29808*x^22*y^11 + 2160*x^21*y^12 + 622080*x^19*y^14 + 248832*x^18*y^15 + 23328*x^17*y^16 + 466560*x^14*y^19 + 93312*x^13*y^20 + 1944*x^12*y^21 + 98928*x^9*y^24 + 6480*x^8*y^25 + 4536*x^4*y^29 + 103680*x^26*y^6 + 77760*x^25*y^7 + 19440*x^24*y^8 + 1620*x^23*y^9 + 492480*x^21*y^11 + 230688*x^20*y^12 + 26892*x^19*y^13 + 596160*x^16*y^16 + 147744*x^15*y^17 + 4860*x^14*y^18 + 220320*x^11*y^21 + 21384*x^10*y^22 + 22356*x^6*y^26 + 324*x^5*y^27 + 324*x*y^31 + 41472*x^28*y^3 + 31104*x^27*y^4 + 7776*x^26*y^5 + 648*x^25*y^6 + 311040*x^23*y^8 + 155520*x^22*y^9 + 19440*x^21*y^10 + 570240*x^18*y^13 + 163296*x^17*y^14 + 6480*x^16*y^15 + 336960*x^13*y^18 + 42768*x^12*y^19 + 62208*x^8*y^23 + 1944*x^7*y^24 + 2592*x^3*y^28 + 6912*x^30 + 5184*x^29*y + 1296*x^28*y^2 + 108*x^27*y^3 + 124416*x^25*y^5 + 62208*x^24*y^6 + 7776*x^23*y^7 + 388800*x^20*y^10 + 116640*x^19*y^11 + 4860*x^18*y^12 + 365040*x^15*y^15 + 52812*x^14*y^16 + 112752*x^10*y^20 + 4860*x^9*y^21 + 9720*x^5*y^25 + 108*y^30 + 20736*x^27*y^2 + 10368*x^26*y^3 + 1296*x^25*y^4 + 155520*x^22*y^7 + 46656*x^21*y^8 + 1944*x^20*y^9 + 259200*x^17*y^12 + 38880*x^16*y^13 + 133488*x^12*y^17 + 6480*x^11*y^18 + 20736*x^7*y^22 + 648*x^2*y^27 + 25920*x^24*y^4 + 7776*x^23*y^5 + 324*x^22*y^6 + 103680*x^19*y^9 + 15552*x^18*y^10 + 97200*x^14*y^14 + 4860*x^13*y^15 + 26244*x^9*y^19 + 1620*x^4*y^24 + 17280*x^21*y^6 + 2592*x^20*y^7 + 38880*x^16*y^11 + 1944*x^15*y^12 + 19440*x^11*y^16 + 2160*x^6*y^21 + 6480*x^18*y^8 + 324*x^17*y^9 + 7776*x^13*y^13 + 1620*x^8*y^18 + 1296*x^15*y^10 + 648*x^10*y^15 + 108*x^12*y^12:\n", + " support points = [(80, 0, 0), (40, 40, 0), (0, 80, 0), (57, 17, 0), (17, 57, 0), (34, 34, 0), (21, 21, 0), (20, 22, 0), (19, 23, 0), (18, 24, 0), (18, 23, 0), (17, 24, 0), (16, 25, 0), (20, 20, 0), (19, 21, 0), (18, 22, 0), (17, 23, 0), (15, 25, 0), (14, 26, 0), (13, 27, 0), (22, 17, 0), (21, 18, 0), (20, 19, 0), (19, 20, 0), (17, 22, 0), (16, 23, 0), (15, 24, 0), (12, 27, 0), (11, 28, 0), (24, 14, 0), (23, 15, 0), (22, 16, 0), (21, 17, 0), (19, 19, 0), (18, 20, 0), (17, 21, 0), (16, 22, 0), (14, 24, 0), (13, 25, 0), (12, 26, 0), (9, 29, 0), (8, 30, 0), (21, 16, 0), (20, 17, 0), (19, 18, 0), (18, 19, 0), (16, 21, 0), (15, 22, 0), (14, 23, 0), (11, 26, 0), (10, 27, 0), (6, 31, 0), (23, 13, 0), (22, 14, 0), (21, 15, 0), (20, 16, 0), (18, 18, 0), (17, 19, 0), (16, 20, 0), (15, 21, 0), (13, 23, 0), (12, 24, 0), (11, 25, 0), (8, 28, 0), (7, 29, 0), (3, 33, 0), (25, 10, 0), (24, 11, 0), (23, 12, 0), (22, 13, 0), (20, 15, 0), (19, 16, 0), (18, 17, 0), (17, 18, 0), (15, 20, 0), (14, 21, 0), (13, 22, 0), (10, 25, 0), (9, 26, 0), (5, 30, 0), (27, 7, 0), (26, 8, 0), (25, 9, 0), (24, 10, 0), (22, 12, 0), (21, 13, 0), (20, 14, 0), (19, 15, 0), (17, 17, 0), (16, 18, 0), (15, 19, 0), (12, 22, 0), (11, 23, 0), (10, 24, 0), (7, 27, 0), (6, 28, 0), (2, 32, 0), (24, 9, 0), (23, 10, 0), (22, 11, 0), (21, 12, 0), (19, 14, 0), (18, 15, 0), (17, 16, 0), (14, 19, 0), (13, 20, 0), (12, 21, 0), (9, 24, 0), (8, 25, 0), (4, 29, 0), (26, 6, 0), (25, 7, 0), (24, 8, 0), (23, 9, 0), (21, 11, 0), (20, 12, 0), (19, 13, 0), (16, 16, 0), (15, 17, 0), (14, 18, 0), (11, 21, 0), (10, 22, 0), (6, 26, 0), (5, 27, 0), (1, 31, 0), (28, 3, 0), (27, 4, 0), (26, 5, 0), (25, 6, 0), (23, 8, 0), (22, 9, 0), (21, 10, 0), (18, 13, 0), (17, 14, 0), (16, 15, 0), (13, 18, 0), (12, 19, 0), (8, 23, 0), (7, 24, 0), (3, 28, 0), (30, 0, 0), (29, 1, 0), (28, 2, 0), (27, 3, 0), (25, 5, 0), (24, 6, 0), (23, 7, 0), (20, 10, 0), (19, 11, 0), (18, 12, 0), (15, 15, 0), (14, 16, 0), (10, 20, 0), (9, 21, 0), (5, 25, 0), (0, 30, 0), (27, 2, 0), (26, 3, 0), (25, 4, 0), (22, 7, 0), (21, 8, 0), (20, 9, 0), (17, 12, 0), (16, 13, 0), (12, 17, 0), (11, 18, 0), (7, 22, 0), (2, 27, 0), (24, 4, 0), (23, 5, 0), (22, 6, 0), (19, 9, 0), (18, 10, 0), (14, 14, 0), (13, 15, 0), (9, 19, 0), (4, 24, 0), (21, 6, 0), (20, 7, 0), (16, 11, 0), (15, 12, 0), (11, 16, 0), (6, 21, 0), (18, 8, 0), (17, 9, 0), (13, 13, 0), (8, 18, 0), (15, 10, 0), (10, 15, 0), (12, 12, 0)]\n", + " vertices = [(0, 30, 0), (30, 0, 0), (12, 12, 0)]\n", + " number of proper faces = 15\n", + " Facet 0: 2*x + 3*y - 60 >= 0\n", + " Facet 1: 3*x + 2*y - 60 >= 0\n", + " Facet 2: x >= 0\n", + " Facet 3: y >= 0\n", + " Facet 4: z >= 0\n" + ] + } + ], + "source": [ + "F2=z^3 -3*x^4+x^5*z + 2*x^6 + y^13\n", + "D2=F2.discriminant(z)\n", + "ZD2 = ZetaFunctions(D1)\n", + "ZD2.is_newton_degenerated()\n", + "ZD2.give_info_newton()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98bc922e-6e45-4fb4-890d-e5f3225966c9", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 10.2", + "language": "sage", + "name": "sagemath-st" + }, + "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.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/resolucionlarga.ipynb b/resolucionlarga.ipynb new file mode 100644 index 0000000..c2a5380 --- /dev/null +++ b/resolucionlarga.ipynb @@ -0,0 +1,279 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + ], + "source": [ + "S. = PolynomialRing(QQ, order='neglex')\n", + "f=((y^2+x^3)^2 + x^5*y)*((x^2+y^3)^2 + y^5*x)\n", + "g=(y^6+x^7)*(x^6+y^7)\n", + "h = f^3 - g^2\n", + "F= z^3 - 3 * f * z + 2 * g" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 4, + "metadata": { + }, + "output_type": "execute_result" + } + ], + "source": [ + "h = f^3 - g^2\n", + "F.discriminant(z) - 108 * h" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 5, + "metadata": { + }, + "output_type": "execute_result" + } + ], + "source": [ + "D=F.discriminant(z)\n", + "load('ZetaFunctionsNewtonND.py')\n", + "ZD = ZetaFunctions(D)\n", + "ZD.is_newton_degenerated(local=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of -108*y^26 + 108*y^30 + 324*x*y^29 + 648*x^2*y^27 + 324*x^2*y^28 + 1296*x^3*y^26 + 108*x^3*y^27 + 648*x^3*y^28 + 1620*x^4*y^24 + 648*x^4*y^25 + 1944*x^4*y^27 + 1944*x^5*y^23 + 3888*x^5*y^25 + 1944*x^5*y^26 + 324*x^5*y^27 - 216*x^6*y^19 + 2160*x^6*y^21 + 324*x^6*y^22 + 7776*x^6*y^24 + 648*x^6*y^25 + 2592*x^6*y^26 + 1080*x^7*y^20 + 9720*x^7*y^22 + 3888*x^7*y^23 + 1944*x^7*y^24 + 5832*x^7*y^25 + 1620*x^8*y^18 + 11664*x^8*y^21 + 13608*x^8*y^23 + 5184*x^8*y^24 + 1296*x^8*y^25 + 324*x^9*y^17 + 12960*x^9*y^19 + 1944*x^9*y^20 + 4860*x^9*y^21 + 21384*x^9*y^22 + 1620*x^9*y^23 + 6048*x^9*y^24 + 648*x^10*y^15 + 7776*x^10*y^18 + 30132*x^10*y^20 + 9720*x^10*y^21 + 7776*x^10*y^22 + 10368*x^10*y^23 + 324*x^10*y^24 + 9720*x^11*y^16 + 6480*x^11*y^18 + 30132*x^11*y^19 + 28512*x^11*y^21 + 7776*x^11*y^22 + 2916*x^11*y^23 + 1944*x^12*y^15 + 36288*x^12*y^17 + 4860*x^12*y^18 + 19440*x^12*y^19 + 33696*x^12*y^20 + 4104*x^12*y^21 + 8424*x^12*y^22 + 3456*x^13*y^13 + 4860*x^13*y^15 + 19440*x^13*y^16 + 55728*x^13*y^18 + 12960*x^13*y^19 + 15552*x^13*y^20 + 11016*x^13*y^21 + 648*x^13*y^22 + 25164*x^14*y^14 + 25920*x^14*y^16 + 42768*x^14*y^17 + 4860*x^14*y^18 + 34992*x^14*y^19 + 6804*x^14*y^20 + 3240*x^14*y^21 + 648*x^15*y^10 + 1944*x^15*y^12 + 4860*x^15*y^13 + 58752*x^15*y^15 + 6480*x^15*y^16 + 34992*x^15*y^17 + 31104*x^15*y^18 + 5508*x^15*y^19 + 6480*x^15*y^20 + 108*x^15*y^21 + 9720*x^16*y^11 + 19440*x^16*y^13 + 25920*x^16*y^14 + 6480*x^16*y^15 + 60264*x^16*y^16 + 9720*x^16*y^17 + 15552*x^16*y^18 + 6480*x^16*y^19 + 648*x^16*y^20 + 324*x^17*y^9 + 36288*x^17*y^12 + 42768*x^17*y^14 + 34992*x^17*y^15 + 9720*x^17*y^16 + 23328*x^17*y^17 + 3888*x^17*y^18 + 1620*x^17*y^19 + 1620*x^18*y^8 + 7776*x^18*y^10 + 6480*x^18*y^11 + 4860*x^18*y^12 + 55728*x^18*y^13 + 4860*x^18*y^14 + 31104*x^18*y^15 + 15552*x^18*y^16 + 3888*x^18*y^17 + 2160*x^18*y^18 - 216*x^19*y^6 + 12960*x^19*y^9 + 30132*x^19*y^11 + 19440*x^19*y^12 + 12960*x^19*y^13 + 34992*x^19*y^14 + 5508*x^19*y^15 + 6480*x^19*y^16 + 1620*x^19*y^17 + 1080*x^20*y^7 + 1944*x^20*y^9 + 30132*x^20*y^10 + 33696*x^20*y^12 + 15552*x^20*y^13 + 6804*x^20*y^14 + 6480*x^20*y^15 + 648*x^20*y^16 + 2160*x^21*y^6 + 11664*x^21*y^8 + 4860*x^21*y^9 + 9720*x^21*y^10 + 28512*x^21*y^11 + 4104*x^21*y^12 + 11016*x^21*y^13 + 3240*x^21*y^14 + 108*x^21*y^15 + 324*x^22*y^6 + 9720*x^22*y^7 + 21384*x^22*y^9 + 7776*x^22*y^10 + 7776*x^22*y^11 + 8424*x^22*y^12 + 648*x^22*y^13 + 1944*x^23*y^5 + 3888*x^23*y^7 + 13608*x^23*y^8 + 1620*x^23*y^9 + 10368*x^23*y^10 + 2916*x^23*y^11 + 1620*x^24*y^4 + 7776*x^24*y^6 + 1944*x^24*y^7 + 5184*x^24*y^8 + 6048*x^24*y^9 + 324*x^24*y^10 + 648*x^25*y^4 + 3888*x^25*y^5 + 648*x^25*y^6 + 5832*x^25*y^7 + 1296*x^25*y^8 - 108*x^26 + 1296*x^26*y^3 + 1944*x^26*y^5 + 2592*x^26*y^6 + 648*x^27*y^2 + 108*x^27*y^3 + 1944*x^27*y^4 + 324*x^27*y^5 + 324*x^28*y^2 + 648*x^28*y^3 + 324*x^29*y + 108*x^30:\n", + " support points = [(0, 26, 0), (0, 30, 0), (1, 29, 0), (2, 27, 0), (2, 28, 0), (3, 26, 0), (3, 27, 0), (3, 28, 0), (4, 24, 0), (4, 25, 0), (4, 27, 0), (5, 23, 0), (5, 25, 0), (5, 26, 0), (5, 27, 0), (6, 19, 0), (6, 21, 0), (6, 22, 0), (6, 24, 0), (6, 25, 0), (6, 26, 0), (7, 20, 0), (7, 22, 0), (7, 23, 0), (7, 24, 0), (7, 25, 0), (8, 18, 0), (8, 21, 0), (8, 23, 0), (8, 24, 0), (8, 25, 0), (9, 17, 0), (9, 19, 0), (9, 20, 0), (9, 21, 0), (9, 22, 0), (9, 23, 0), (9, 24, 0), (10, 15, 0), (10, 18, 0), (10, 20, 0), (10, 21, 0), (10, 22, 0), (10, 23, 0), (10, 24, 0), (11, 16, 0), (11, 18, 0), (11, 19, 0), (11, 21, 0), (11, 22, 0), (11, 23, 0), (12, 15, 0), (12, 17, 0), (12, 18, 0), (12, 19, 0), (12, 20, 0), (12, 21, 0), (12, 22, 0), (13, 13, 0), (13, 15, 0), (13, 16, 0), (13, 18, 0), (13, 19, 0), (13, 20, 0), (13, 21, 0), (13, 22, 0), (14, 14, 0), (14, 16, 0), (14, 17, 0), (14, 18, 0), (14, 19, 0), (14, 20, 0), (14, 21, 0), (15, 10, 0), (15, 12, 0), (15, 13, 0), (15, 15, 0), (15, 16, 0), (15, 17, 0), (15, 18, 0), (15, 19, 0), (15, 20, 0), (15, 21, 0), (16, 11, 0), (16, 13, 0), (16, 14, 0), (16, 15, 0), (16, 16, 0), (16, 17, 0), (16, 18, 0), (16, 19, 0), (16, 20, 0), (17, 9, 0), (17, 12, 0), (17, 14, 0), (17, 15, 0), (17, 16, 0), (17, 17, 0), (17, 18, 0), (17, 19, 0), (18, 8, 0), (18, 10, 0), (18, 11, 0), (18, 12, 0), (18, 13, 0), (18, 14, 0), (18, 15, 0), (18, 16, 0), (18, 17, 0), (18, 18, 0), (19, 6, 0), (19, 9, 0), (19, 11, 0), (19, 12, 0), (19, 13, 0), (19, 14, 0), (19, 15, 0), (19, 16, 0), (19, 17, 0), (20, 7, 0), (20, 9, 0), (20, 10, 0), (20, 12, 0), (20, 13, 0), (20, 14, 0), (20, 15, 0), (20, 16, 0), (21, 6, 0), (21, 8, 0), (21, 9, 0), (21, 10, 0), (21, 11, 0), (21, 12, 0), (21, 13, 0), (21, 14, 0), (21, 15, 0), (22, 6, 0), (22, 7, 0), (22, 9, 0), (22, 10, 0), (22, 11, 0), (22, 12, 0), (22, 13, 0), (23, 5, 0), (23, 7, 0), (23, 8, 0), (23, 9, 0), (23, 10, 0), (23, 11, 0), (24, 4, 0), (24, 6, 0), (24, 7, 0), (24, 8, 0), (24, 9, 0), (24, 10, 0), (25, 4, 0), (25, 5, 0), (25, 6, 0), (25, 7, 0), (25, 8, 0), (26, 0, 0), (26, 3, 0), (26, 5, 0), (26, 6, 0), (27, 2, 0), (27, 3, 0), (27, 4, 0), (27, 5, 0), (28, 2, 0), (28, 3, 0), (29, 1, 0), (30, 0, 0)]\n", + " vertices = [(0, 26, 0), (26, 0, 0), (19, 6, 0), (6, 19, 0)]\n", + " number of proper faces = 19\n", + " Facet 0: -156 + 7*y + 6*x >= 0\n", + " Facet 1: -25 + y + x >= 0\n", + " Facet 2: -156 + 6*y + 7*x >= 0\n", + " Facet 3: x >= 0\n", + " Facet 4: y >= 0\n", + " Facet 5: z >= 0\n" + ] + } + ], + "source": [ + "ZD.give_info_newton(faces=False, cones=False, compact = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + ], + "source": [ + "def estrato(ff, chi, pesos):\n", + " Z1 = ZetaFunctions(ff)\n", + " zetamon1 = Z1.monodromy_zeta().value()^chi\n", + " zetatop1 = chi * Z1.topological_zeta(local=True, weights=pesos).value()\n", + " return zetamon1, zetatop1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Veamos que la resolución larga no aporta\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 0)" + ] + }, + "execution_count": 8, + "metadata": { + }, + "output_type": "execute_result" + } + ], + "source": [ + "M3, Z3 = estrato(z^3+x^26,-1, [5,1,1])\n", + "M9, Z9 = estrato(z^3+x^52,-1, [11,1,1])\n", + "M8, Z8 = estrato(z^3+x^26,1, [6,1,1])\n", + "M39, Z39 = estrato(z^3+x^26*y^52,1, [5,11,1])\n", + "M98, Z98 = estrato(z^3+x^52*y^26, 1, [11,6,1])\n", + "M9f, Z9f = estrato(z^3+x^50*y*z + x^52, 1, [11,1,1])\n", + "Z3 + Z39 + Z98 + Z8, Z9 + Z9f\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Cálculo completo\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (3357930205.py, line 3)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn [9], line 3\u001b[0;36m\u001b[0m\n\u001b[0;31m M17, Z17 = estrato(z**Integer(3)+, Integer(2), [Integer(2),Integer(13),Integer(1)])\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "M1, Zt1 = estrato(z^3+x^4*z^2 + x^13, -13, [2,1,1])\n", + "M1d, Zt1d = estrato(z^3+x^4*z^2 + x^13*y, 13, [2,1,1])\n", + "M17, Z17 = estrato(z^3+x^4*y^28*z^2 + x^13*y^78 , 2, [2,13,1])\n", + "M7, Z7 = estrato(z^3+x^4*z + x^13*y, -4, [13,1,1])\n", + "M7d, Z7d = estrato(z^3+x^4*z + x^13*y, -4, [13,1,1])\n", + "M7g, Z7g\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Newton's polyhedron of z^3 + x^4*z + x^13:\n", + " support points = [(0, 0, 3), (4, 0, 1), (13, 0, 0)]\n", + " vertices = [(0, 0, 3), (4, 0, 1), (13, 0, 0)]\n", + " number of proper faces = 15\n", + " Facet 0: z >= 0\n", + " Facet 1: -13 + 9*z + x >= 0\n", + " Facet 2: -6 + 2*z + x >= 0\n", + " Facet 3: x >= 0\n", + " Facet 4: y >= 0\n" + ] + }, + { + "data": { + "text/plain": [ + "(-1/6) * (s + 2/3)^-1 * (s + 1)^-1 * (s - 2)" + ] + }, + "execution_count": 55, + "metadata": { + }, + "output_type": "execute_result" + } + ], + "source": [ + "G=z^3+x^4*z + x^13\n", + "ZG=ZetaFunctions(G)\n", + "ZG.give_info_newton(faces=False, cones=False, compact = False)\n", + "ZG.topological_zeta(local= True, weights = [2,1,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "collapsed": false + }, + "outputs": [ + ], + "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "collapsed": false + }, + "outputs": [ + ], + "source": [ + ] + } + ], + "metadata": { + "kernelspec": { + "argv": [ + "sage-10.0", + "--python", + "-m", + "sage.repl.ipython_kernel", + "--matplotlib=inline", + "-f", + "{connection_file}" + ], + "display_name": "SageMath 10.0", + "env": { + }, + "language": "sagemath", + "metadata": { + "cocalc": { + "description": "Open-source mathematical software system", + "priority": 10, + "url": "https://www.sagemath.org/" + } + }, + "name": "sage-10.0", + "resource_dir": "/ext/jupyter/kernels/sage-10.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file