{ "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/uny9fvtw6duxo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0KBBmjdvnjIzMzV9+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/evcXR0VF8fHxkyZIlOr8TAwYMkLlz58rixYulefPm4u3tLcuXL9dePmHCBImIiNDZZ3FxsbRo0UI2bdpU57jLy8tlyJAhMmLECCkvLxcRkWvXrom/v78sXbq0xttV12Or8v8LIiLHjx/X/n6J/O85vULl37nq1HZ/RUZGVvuzrcmLL74oU6ZMqTKO6jz00EOyZMkSnWUFBQVib28v+/fvFxH9/w/buXOndOzYUezs7GTatGlVHn/Jyck6z+kV/v3vf8vo0aPF3d1d3Nzc5OGHH9Y+n4uIbNq0STp06CBOTk4SHBwsMTEx2ss0Go3Mnj1bfHx8xMnJSQICAuT111+v9Tabi80F3QcffCC9evUSEZGdO3dKYGCg9sGor3379olKpZLr16/XuE5RUZG0bNlSIiIi5N///rfs3LlT7r333jqDzsHBQYYNGybHjh2T1NRUadGihQwfPlzGjx8vJ0+elJ07d4qjo6Ns27ZNu69JkyZJnz595MCBA3L69GlZs2aNODk5SXZ2ts52hw4dKkeOHJGjR49Kx44dZdKkSSIiUlJSIh4eHrJo0SI5ffq0/PLLL7J582ZtsFZ+snjrrbdErVbLp59+KqdOnZIXX3xRHBwctPureEB16NBBvvzyS8nKypKxY8dKQECA9gnk4sWLsmbNGjl+/LicOXNG3nnnHbGzs5PDhw9r96NP0DVt2lQGDx4sx48fl9TUVGnXrp32dhky1oqfyWuvvSadOnXS2c/8+fOlf//+2vMApHXr1rJ161bJycmRefPmiZubm1y9elVERC5fviz33HOPREVFSWZmphw7dkyGDRsmgwYN0m7j//2//yetW7eWvXv3ys8//yyPPvqouLm5VYkqtVota9askZycHMnJyZH09HRp0qSJvPrqq5KVlSXx8fHi4uIi8fHxOtfz9PSUmJgYycnJkejoaGnSpIlkZmbWeF9WF3SGbuNu165dk/bt20tYWFitj6+YmBhxdHSU77//Xq/t6mvZsmUSEhJS6zqjRo2SLl26yKFDhyQ9PV369OkjLi4u2qArLy+Xvn37SlhYmBw5ckSys7Nl4cKF0qJFC7l69ar8+eef8s033wgA+fHHHyUvL09KS0urDTq1Wi0zZ86UzMxM2blzp7i6ukpcXJx2nboew4cPHxaVSiXR0dGSlZUlb7/9tjRr1qzO/0xXrlwp33//veTm5kpSUpJ4e3vLG2+8ob28c+fOMmXKFMnMzJTs7Gz55z//qQ3WygoKCgSAxMfHS15enhQUFIjIncehm5ubPPHEE3LixAk5cOCA+Pj46ETN0qVLpUOHDrJnzx45c+aMxMfHi5OTk6SkpNQ49vHjx4u/v7/s2LFDzpw5I9988432ee/ixYvi6uoqs2bNkszMTElMTJR77rlHJ9gGDBggarVaVqxYIdnZ2fLhhx+KSqWSvXv3isid538XFxe5ceOG9jo7d+4UZ2dn7XN7XeO+ePGiNG/eXNavXy8iIhEREdKrVy+daK6srseWKYKurvvrjz/+kFdffVVat26t87OtzrfffitBQUFy/fp1vYLu3XfflTZt2ug8D7z77rvSqlUrKSsrExH9/w/r06ePfP/993Lq1Cn5448/ZPz48TJy5EjJy8uTvLw80Wg0VZ7TL168KJ6envLEE0/IkSNHJCsrSzZt2iSnTp0SEZG4uDjx9fWVhIQE+fXXXyUhIUE8PT1l8+bNIiKyZs0a8ff3lwMHDsjZs2flu+++qzL5oBQ2F3R9+vTRPvhKSkrknnvukX379ul9/Vu3bklISIhMnjy51vXef/998fT0lJs3b2qXxcbG1hl0AHT+cnjuuefE1dVV50lnxIgR8txzz4mIyOnTp0WlUsmlS5d09j9kyBCJioqqcbsxMTHi7e0tIiJXr14VADU+uVZ+svDz85PXXntNZ53evXvLrFmzROR/kXT3X9MnT54UALUGwejRo2XhwoXa8/oEnZ2dnc7Mzu7du6VJkyaSl5dn0FgrfiaXL18WOzs7+eGHH0Tkzl/sLVu21D64Re4E3UsvvaQ9X1RUJCqVSjvz9/LLL8vw4cN19nnhwgUBIFlZWXLjxo0qUX716lVxcXGpElXh4eE625k0aZIMGzZMZ9nixYt1IjQgIECmTJmiPV9eXi5eXl4SGxtb3d0oItUHnaHbqFBWViajRo2Sjh071vpHT2pqqjg4OMjGjRvr3KYhTp8+LWq1utbtZmVlCQCdPyAyMzMFgDbovv32W1Gr1XL79m2d67Zt21Y7o1L5P1qRqo+XyMhICQgI0JlVHzdunHZ2SJ/H8MSJE2XkyJE6l0dERNT5n2llq1ev1gldd3d3nd/tugCQxMREnWXLly8XV1dXnRm5xYsXy4MPPigidx4fzs7OOjP0IiIzZsyQiRMnVrufip9PTc/NS5culeDgYJ1IiImJETc3N20kDBgwQB5++GGd6/Xu3Vs7W1RcXCz33HOPbNmyRXv5xIkTZdy4cQaN+5///Kc4OTlJVFSUuLq6SlZWVrVjrlDXY8sUQafP/bVu3bo6Z+auXLki/v7+kpqaWu04qlMxG3fgwAHtstDQUFm8eLGIGPZ/WOU/Nipmv+9W+Tk9KipKgoKCaoxsf3//KoG2cuVKCQ0NFRGRuXPnyuDBgw2e+DEHm3qROSsrCz/++CN27NgBALC3t0dERAQ2bdqEoUOH1nn9kpISTJgwAeXl5fj73/+uXT5z5kx8/PHH2vNFRUXIzMxEt27d4Orqql0eGhpa5z5cXV3Rtm1b7Xlvb28EBgbCzc1NZ1nFp/2OHTsGEUH79u11tqPRaHTex1N5u76+vtpteHp6Yvr06RgxYgSGDRuGoUOHYvz48fD19a0yvsLCQly+fBl9+/bVWd63b1/89NNPOsu6du2qsz8AKCgoQIcOHVBWVoZVq1Zh+/btuHTpEjQaDTQaDZo2bVrnfXS3Nm3aoHXr1trzoaGhKC8vR1ZWFlxdXfUe693jfOSRR7Bp0yY88MAD+PLLL3H79m2MGzeuxtvWtGlTuLu7a+/Po0ePIjk5WednVuHMmTO4desWiouLdX4fPD09ERwcXGX9Xr166ZzPzMzEmDFjqtye9evXo6ysDHZ2dlXGp1Kp4OPjY/AnROu7jaVLlyItLQ0//vgj1Gp1teucP38eY8eOxbPPPounn37aoHHV5vLlyxg5ciTGjRtX63YzMzNhb2+vc/926NBB5w3eR48eRVFRUZX3w926dQtnzpwxaFydO3fW/myAO79nJ06cAKDfYzgzMxOPP/64zuWhoaHYs2dPrfv917/+hfXr1+P06dMoKipCaWmpzs9kwYIFePrpp/HRRx9h6NChGDdunM7zhL4CAwN13oN59/PLL7/8gtu3b2PYsGE61ykuLkaPHj2q3V5GRgbs7OwwYMCAai/PzMxEaGiozvuP+/bti6KiIly8eBFt2rQBoPs7XHlcDg4OGDduHD755BNMnToVN2/exBdffIGtW7caNO5x48YhMTER0dHRiI2NrfJzrI4xHp+G0Pf+qsszzzyDSZMmoX///nrvu2XLlhg2bBg++eQT9OvXD7m5uUhLS0NsbCwA/f8Pc3R0rPLz1EdGRgb69esHBweHKpf99ttvuHDhAmbMmIFnnnlGu7y0tFT7YcXp06dj2LBhCA4OxsiRI/Hoo49i+PDhBo+jMdhU0H3wwQcoLS1Fq1attMtEBA4ODrh27RqaN29e43VLSkowfvx45ObmYv/+/TpPiq+++ioWLVqks76I1GuMlX/pVCpVtcsq3hBaXl4OOzs7HD16VOc/DAA6QVHdNu4eY3x8PObNm4c9e/Zg+/bteOmll7Bv3z489NBD1Y6z8gc5RKTKsrv3WXFZxbjffPNNrFu3DuvXr9d+gviFF15o8Bv/K/Zz91j0Gevdnn76aUydOhXr1q1DfHw8IiIidMK88m2r2MfdP5OwsDC88cYbVbbt6+uLnJwcvW9P5cCtbuzV/a7VNj591Wcb27dvx9q1a7Fr1y7cd9991a5z69YtPP744+jcuXODD99wt8uXL2PQoEEIDQ1FXFxcretW3Ge1/R6Ul5fD19cXKSkpVS4z9JN9DX0M1+f55PDhw5gwYQJeeeUVjBgxAh4eHti2bRvefPNN7TorVqzApEmTsGvXLuzevRvLly/Htm3bqsRjQ28fAOzatUvnuRcAnJycqt2ei4tLrfur7XFw9/K6focnT56MAQMGoKCgAPv27YOzszNGjRpl0Lj//PNP7c9O38d2beNq0qSJzu0B7vz/0xD63l912b9/P5KSkrB27VrtNsrLy2Fvb4+4uDj85S9/qfZ6kydPxvPPP493330XW7duRefOndGtWzcA+v8f5uLiUq8PENb2u1Rxn2/cuFHnA1kAtGPp2bMncnNzsXv3bnzzzTcYP348hg4din/9618Gj8XUbCboSktLsWXLFrz55ptV6vrJJ5/EJ598gjlz5lR73YqYy8nJQXJycpW/2L28vODl5aWzrFOnTvjoo49w69Yt7S/U4cOHjXiL7ujRowfKyspQUFDQ4E8c9ejRAz169EBUVBRCQ0OxdevWKkGnVqvh5+eHgwcP6vyVdujQITzwwAN67+u7777DmDFjMGXKFAB3Hlg5OTno2LGjQWM+f/48Ll++DD8/PwBAWloamjRpgvbt29d7rKNHj0bTpk0RGxuL3bt348CBAwaNqWfPnkhISEBgYGC1n7Rq164dHBwccPjwYe1fxteuXUN2dnaNMxIVOnXqhIMHD+osO3ToENq3b1/lybCxZWRk4C9/+QtWrVqFESNG1Lje008/jd9//x1ff/210T6JdunSJQwaNAghISGIj4/X/qdYk44dO6K0tBTp6ena34WsrCydY0L27NkT+fn5sLe3R2BgoFHGWR19HsOdOnWq8vxR1/PJ999/j4CAACxbtky77Ny5c1XWa9++Pdq3b4/58+dj4sSJiI+PrzHoHBwcUFZWVtdNqjJ2JycnnD9/vs7f7wr3338/ysvLkZqaWu2rJ506dUJCQoJOqBw6dAju7u5V4qs2ffr0gb+/P7Zv347du3dj3LhxcHR0NGjcCxcuRJMmTbB7926MHj0ajzzyCAYPHqz3GCpr2bIlACAvL087ydDQY6oZ6/5KS0vT+fl/8cUXeOONN3Do0KFatxMeHo7nnnsOe/bswdatWzF16lTtZQ35P8zR0bHO38euXbviww8/RElJSZWQ9vb2RqtWrfDrr79i8uTJNW5DrVYjIiICERERGDt2LEaOHInff/8dnp6eBo3X1Gwm6L788ktcu3YNM2bMqHLct7Fjx+KDDz6oNuhKS0sxduxYHDt2DF9++SXKysqQn58P4M7LZBUP/somTZqEZcuWYcaMGXjppZdw9uxZ7V81xtS+fXtMnjwZ06ZNw5tvvokePXrgypUr2L9/P+6//36MHj26zm3k5uYiLi4Ojz32GPz8/JCVlYXs7GxMmzat2vUXL16M5cuXo23btujevTvi4+ORkZGBTz75RO9xt2vXDgkJCTh06BCaN2+Ot956C/n5+QYHnbOzMyIjI7F27VoUFhZi3rx5GD9+PHx8fOo9Vjs7O0yfPh1RUVFo166dXi+V32327NnYuHEjJk6ciMWLF+Oee+7B6dOnsW3bNmzcuBFubm6YMWMGFi9ejBYtWsDb2xvLli2rM0KAO/959O7dGytXrkRERATS0tLw3nvv6bwFwByuXLmC8PBwDBw4EFOmTNE+RirY2dmhZcuWWLNmDT777DPs3LkTpaWlVdbz8PCoc3amssuXL2PgwIFo06YN1q5di99++017WcXvQWUVL58888wziIuLg729PV544QWdfQ8dOhShoaEIDw/HG2+8geDgYFy+fBlfffUVwsPDq7wcXl/6PIbnzZuHPn36YPXq1QgPD8fevXvrfLm1Xbt2OH/+PLZt24bevXtj165dSExM1F5+69YtLF68GGPHjkVQUBAuXryII0eO4Mknn6xxm4GBgfj222/Rt29fODk51fqqRgV3d3csWrQI8+fPR3l5OR5++GEUFhbi0KFDcHNzQ2RkZLX7iYyMxF/+8he888476NatG86dO4eCggKMHz8es2bNwvr16zF37lzMmTMHWVlZWL58ORYsWKDX46iCSqXCpEmTsGHDBmRnZyM5Odmgce/atQubNm1CWloaevbsif/7v/9DZGQkfv75Z73um+q0a9cO/v7+WLFiBf72t78hJydHZ1a1Pox1f1V+fk5PT0eTJk3qPOZb06ZNMWbMGLz88svIzMzEpEmTtJc15P+wwMBAfP3118jKykKLFi2qPabrnDlz8O6772LChAmIioqCh4cHDh8+jAceeADBwcFYsWIF5s2bB7VajVGjRkGj0SA9PR3Xrl3DggULsG7dOvj6+qJ79+5o0qQJPvvsM/j4+CjioN5VNO5b9szn0UcfldGjR1d72dGjRwWAHD16tMplFW+wrO5U+bAClaWlpUm3bt3E0dFRunfvLgkJCXodtuRu1b3ZtfIbQYuLi+Wvf/2rBAYGioODg/j4+Mjjjz8uP//8c43bTUxMlIoff35+voSHh4uvr6/2UBh//etftW+Wre2wJQ4ODrUeCqTCtWvXdO6zq1evypgxY8TNzU28vLzkpZdekmnTpuncLn0PW/L3v/9d/Pz8xNnZWZ544gn5/fffGzRWEZEzZ84IAFm9enWV/aKaN4Z7eHjofNI0OztbHn/8cWnWrJm4uLhIhw4d5IUXXtC+sfbGjRsyZcoUcXV1FW9vb1m9enW1H0y4+xAaFSoOW+Lg4CBt2rSpcpiV6q7XrVs3nU8AVqbPvmvbxubNm2t8nOCuwyAEBgbWut7d96G+qjt8SMWpNnl5efLII4+Ik5OTtGnTRnvYjbtvd2FhocydO1f8/PzEwcFB/P39ZfLkyXL+/HkR0f9DEZXfuP3888/LgAEDtOfregyL3PmEfsXhecLCwvQ6bMnixYulRYsW4ubmJhEREbJu3TrtdTQajUyYMEH8/f3F0dFR/Pz8ZM6cOXLr1q0at5eUlCTt2rUTe3v7KoctuVvlN9iXl5fL22+/LcHBweLg4CAtW7aUESNGaN9cX51bt27J/Pnztc9L7dq10x5ORES/w5ZUfv4YM2aMREZG6iyr+MBWQEBAlTe+1zbugoIC8fb21jmERUlJiTzwwAMyfvz4Gm+XPo+tgwcPyv333y/Ozs7Sr18/+eyzz0x62BIR/T4UUZk+H4qosGvXLgGgc8SACvX5P0zkzgcuhg0bJm5ubrUetuSnn36S4cOHi6urq7i7u0u/fv3kzJkz2ss/+eQT6d69uzg6Okrz5s2lf//+smPHDhG58ynY7t27S9OmTUWtVsuQIUPk2LFj+t9JjUglUs83exGZ2YoVK/D555+b5Ctevv/+ewwcOBAXL16Et7e30bdPRERkTDbzkiuRPjQaDS5cuICXX34Z48ePZ8wREZFFsMmv/iKqyaefforg4GBcv34dq1evNvdwiIiI9MKXXImIiIgsHGfoiIiIiCwcg46IiIjIwjHoiIiIiCycRQSdiKCwsLDeX6dFREREZM0sIuhu3LgBDw8P3Lhxw9xDISIiIlIcg4IuNjYWXbt2hVqthlqtRmhoKHbv3l3rdVJTUxESEgJnZ2fce++92LBhQ4MGTERERES6DAq61q1bY9WqVUhPT0d6ejoGDx6MMWPG4OTJk9Wun5ubi9GjR6Nfv344fvw4li5dinnz5iEhIcEogyciIiIiIxyHztPTE2vWrMGMGTOqXLZkyRIkJSUhMzNTu2zmzJn46aefkJaWptf2f/sN+OijQixc6IFr166jWTN1Q4ZLRFSt5GTg3/8GBg8GOnc292iIiAxT7/fQlZWVYdu2bbh58yZCQ0OrXSctLQ3Dhw/XWTZixAikp6ejpKSkzn1cuwY8+CCwcOGd87Nm1Xe0REQ1+8c/7oTcvHlAr17AkSPmHhERkWEM/i7XEydOIDQ0FLdv34abmxsSExPRqVOnatfNz8+v8l2Y3t7eKC0txZUrV+Dr61vt9TQaDTQaDfbssUdurqt2+bZtgr7jfkATO0NHTURUszfXdQRwZ/b/9m3gn/8Eevc275iIiAxhcNAFBwcjIyMDf/zxBxISEhAZGYnU1NQao06lUumcr3iFt/Lyu0VHR+OVV14B0BPA0buuq8KcJx40dMhERAbhEZKIyNI0+D10Q4cORdu2bfH+++9Xuax///7o0aMH3n77be2yxMREjB8/Hn/++SccHByq3WbFDB0AxMU54PVVN3Htakug30Kg4/6GDJeIqKpbzYHklcDv7aBSqeDapDmSv7XnLB0RWQyDZ+gqExFtfFUWGhqKnTt36izbu3cvevXqVWPMAYCTkxOcnJwAAIsWAT7tT2PqGABt9wF+Pzd0yEREVbW988ei3HbH7U++weChPbH/G0YdEVkGgz4UsXTpUnz33Xc4e/YsTpw4gWXLliElJQWTJ08GAERFRWHatGna9WfOnIlz585hwYIFyMzMxKZNm/DBBx9g0aJFxr0VRETG4nwDZZOH4pbHMQweWsoPSBCRRTAo6P7zn/9g6tSpCA4OxpAhQ/DDDz9gz549GDZsGAAgLy8P58+f164fFBSEr776CikpKejevTtWrlyJd955B08++aRxbwURkTEx6ojIwjT4PXSN4eOkE5g6piswvSsQyJdciaiR3HaH3SffwOU6X34lImWziO9yJSIyC87UEZGFYNAREdWGUUdEFoBBR0RUF0YdESmcooMuJiYGnTp1wpLZ4eYeChHZOkYdESkYPxRBRGQIflCCiBRI0TN0RESKw5k6IlIgBh0RkaEYdUSkMAw6IqL6YNQRkYIw6IiI6otRR0QKwaAjImoIRh0RKQCDjoiooRh1RGRmDDoiImNg1BGRGTHoiIiMhVFHRGai6KDjN0UQkcVh1BGRGfCbIoiITIHfKEFEjUjRM3RERBaLM3VE1IgYdEREpsKoI6JGwqAjIjIlRh0RNQIGHRGRqTHqiMjEGHRERI2BUUdEJsSgIyJqLIw6IjIRBh0RUWNi1BGRCSg66HhgYSKySow6IjIyHliYiMhcePBhIjISRc/QERFZNc7UEZGRMOiIiMyJUUdERsCgIyIyN0YdETUQg46ISAkYdUTUAAw6IiKlYNQRUT0x6IiIlIRRR0T1wKAjIlIaRh0RGUjRQccDCxORzWLUEZEBeGBhIiIl48GHiUgPip6hIyKyeZypIyI9MOiIiJSOUUdEdWDQERFZAkYdEdWCQUdEZCkYdURUA4OCLjo6Gr1794a7uzu8vLwQHh6OrKysWq+TkpIClUpV5XTq1KkGDZyIyCYx6oioGgYFXWpqKmbPno3Dhw9j3759KC0txfDhw3Hz5s06r5uVlYW8vDzt6b777qv3oImIbBqjjogqsTdk5T179uicj4+Ph5eXF44ePYr+/fvXel0vLy80a9bM4AESEVE1KqLuk28weCgPaUJk6xr0Hrrr168DADw9Petct0ePHvD19cWQIUOQnJxc67oajQaFhYXa060/ixoyTCIi68SZOiL6r3oHnYhgwYIFePjhh9GlS5ca1/P19UVcXBwSEhKwY8cOBAcHY8iQIThw4ECN14mOjoaHh4f29OzEPvUdJhGRdWPUEREa8E0Rs2fPxq5du3Dw4EG0bt3aoOuGhYVBpVIhKSmp2ss1Gg00Go32/PavTt6JOn5TBBFR9fiNEkQ2rV4zdHPnzkVSUhKSk5MNjjkAeOihh5CTk1Pj5U5OTlCr1dqTi6tbfYZJRGQ7OFNHZNMMCjoRwZw5c7Bjxw7s378fQUFB9drp8ePH4evrW6/rEhFRDRh1RDbLoE+5zp49G1u3bsUXX3wBd3d35OfnAwA8PDzg4uICAIiKisKlS5ewZcsWAMD69esRGBiIzp07o7i4GB9//DESEhKQkJBg5JtCRET89CuRbTJohi42NhbXr1/HwIED4evrqz1t375du05eXh7Onz+vPV9cXIxFixaha9eu6NevHw4ePIhdu3bhiSeeMN6tICKi/+FMHZHNqfeHIhrTx0knMHVMV34ogojIEPygBJHN4He5EhFZK87UEdkMBh0RkTVj1BHZBEUHXUxMDDp16oQls8PNPRQiIsvFqCOyenwPHRGRreB76oislqJn6IiIyIg4U0dktRh0RES2hFFHZJUYdEREtoZRR2R1GHRERLaIUUdkVRh0RES2ilFHZDUYdEREtoxRR2QVGHRERLaOUUdk8Rh0RETEqCOycIoOOn5TBBFRI2LUEVksflMEERHp4jdKEFkcRc/QERGRGXCmjsjiMOiIiKgqRh2RRWHQERFR9Rh1RBaDQUdERDVj1BFZBAYdERHVjlFHpHgMOiIiqhujjkjRGHRERKQfRh2RYik66HhgYSIihWHUESkSDyxMRESG48GHiRRF0TN0RESkUJypI1IUBh0REdUPo45IMRh0RERUf4w6IkVg0BERUcMw6ojMjkFHREQNx6gjMisGHRERGQejjshsGHRERGQ8jDois1B00PHAwkREFohRR9ToeGBhIiIyDR58mKjRKHqGjoiILBhn6ogaDYOOiIhMh1FH1CgYdEREZFqMOiKTY9AREZHpMeqITMqgoIuOjkbv3r3h7u4OLy8vhIeHIysrq87rpaamIiQkBM7Ozrj33nuxYcOGeg+YiIgsFKOOyGQMCrrU1FTMnj0bhw8fxr59+1BaWorhw4fj5s2bNV4nNzcXo0ePRr9+/XD8+HEsXboU8+bNQ0JCgl77LCkBsjOdDBkmEREpFaOOyCQadNiS3377DV5eXkhNTUX//v2rXWfJkiVISkpCZmamdtnMmTPx008/IS0trdbtFxcDw4cDqamFADyAkFVA2P/Vd7hERKQUPKQJkVE16D10169fBwB4enrWuE5aWhqGDx+us2zEiBFIT09HSUlJtdfRaDQoLCxEUtKfSE2964JjTwOl9g0ZMhERKQFn6oiMqt5BJyJYsGABHn74YXTp0qXG9fLz8+Ht7a2zzNvbG6Wlpbhy5Uq114mOjoaHhwfGjXuk0k4dYL++AEh6HzgzFCizq+/wiYjI3Bh1REZT76CbM2cOfv75Z3z66ad1rqtSqXTOV7zKW3l5haioKFy/fh3Xr3+ByMhi7fJly4CFs5vD/+pTwEf7YL/uN8YdEZElY9QRGUW9gm7u3LlISkpCcnIyWrduXeu6Pj4+yM/P11lWUFAAe3t7tGjRotrrODk5Qa1WQ61WY/NmR5w/f2f5iy8Cq1YB53IdkJ7OuCMisgqMOqIGMyjoRARz5szBjh07sH//fgQFBdV5ndDQUOzbt09n2d69e9GrVy84ODjotV8PD93zKhUQEsK4IyKyGow6ogYx6FOus2bNwtatW/HFF18gODhYu9zDwwMuLi4A7rxceunSJWzZsgXAncOWdOnSBc899xyeeeYZpKWlYebMmfj000/x5JNP6rXfwsJCeHh44Pr161Cr1TWuJwIcOwZ89hmwdVsJLpxzgL3bNZS2/wzo/BkQmAzYlel7c4mIqLHx069E9WJQ0NX0nrf4+HhMnz4dADB9+nScPXsWKSkp2stTU1Mxf/58nDx5En5+fliyZAlmzpyp9yD1Dbq7Me6IiCwUo47IYA06Dl1jqU/Q3Y1xR0RkYRh1RAaxiaC7G+OOiMhCMOqI9GZzQXc3xh0RkcIx6oj0ouigi4mJQUxMDMrKypCdnW30oLsb446ISKEYdUR1UnTQVTDVDF1NGHdERArDqCOqFYOuDow7IiKFYNQR1YhBZwDGHRGRmTHqiKrFoKsnxh0RkZkw6oiqYNAZAeOOiKiRMeqIdDDojIxxR0TUSBh1RFoMOhNi3BERmRijjggAg67RMO6IiEyEUUfEoDMHxh0RkZEx6sjGKTroGvObIsyFcUdEZCSMOrJhig66CtY2Q1cTxh0RUQMx6shGMegUinFHRFRPjDqyQQw6C8C4IyIyEKOObAyDzsIw7oiI9MSoIxvCoLNgjDsiojow6shGMOisBOOOiKgGjDqyAQw6K8S4IyKqhFFHVo5BZ+UYd0RE/8WoIyum6KCzhQMLNybGHRHZPEYdWSlFB10FztAZH+OOiGwWo46sEIOOGHdEZHsYdWRlGHSkg3FHRDaDUUdWhEFHNWLcEZHVY9SRlWDQkV4Yd0RktRh1ZAUYdGQwxh0RWR1GHVk4Bh01COOOiKwGo44sGIOOjIZxR0QWj1FHFopBRybBuCMii8WoIwuk6KDjN0VYB8YdEVkcRh1ZGEUHXQXO0FkPxh0RWQxGHVkQBh2ZDeOOiBSPUUcWgkFHisC4IyLFYtSRBWDQkeIw7ohIcRh1pHBNDL3CgQMHEBYWBj8/P6hUKnz++ee1rp+SkgKVSlXldOrUqfqOmaycSgWEhACrVgHnch2Qng4snN0c/lefAj7aB/t1vwFJ7wNnhgJlduYeLhHZAucbKJs8FLc8jmHw0FIcOWLuARHpMjjobt68iW7duuG9994z6HpZWVnIy8vTnu677z5Dd002iHFHRIrBqCMFa9BLriqVComJiQgPD69xnZSUFAwaNAjXrl1Ds2bN6rUfvuRKlfFlWSIyG778Sgpk8AxdffXo0QO+vr4YMmQIkpOTa11Xo9GgsLBQ50R0N87cEZHZcKaOFMjkQefr64u4uDgkJCRgx44dCA4OxpAhQ3DgwIEarxMdHQ0PDw/tyd/f39TDJAvGuCOiRseoI4Ux+Uuu1QkLC4NKpUJSUlK1l2s0Gmg0Gu35wsJC+Pv78yVXMghfliUik+PLr6QQjfaS690eeugh5OTk1Hi5k5MT1Gq1zonIUJy5IyKT40wdKYRZgu748ePw9fU1x67JRjHuiMhkGHWkAAa/5FpUVITTp08DuPNBh7feeguDBg2Cp6cn2rRpg6ioKFy6dAlbtmwBAKxfvx6BgYHo3LkziouL8fHHH2PVqlVISEjAE088odc++SlXMhW+LEtERsOXX8mMDA66isOQVBYZGYnNmzdj+vTpOHv2LFJSUgAAq1evRlxcHC5dugQXFxd07twZUVFRGD16tN77ZNBRY2DcEVGDMerITPjVX0TVYNwRUb0x6sgMGHREdWDcEZHBGHXUyBh0RAZg3BGR3hh11IgUHXQxMTGIiYlBWVkZsrOzGXSkKIw7IqoTo44aiaKDrgJn6EjpGHdEVCNGHTUCBh2RkTHuiKgKRh2ZGIOOyIQYd0SkxagjE2LQETUSxh0RMerIVBh0RGbAuCOyYYw6MgEGHZGZMe6IbBCjjoyMQUekIIw7IhvCqCMjYtARKRTjjsgGMOrISBh0RBaAcUdkxRh1ZASKDjp+UwRRVYw7IivEqKMGUnTQVeAMHVH1GHdEVoRRRw3AoCOyEow7IivAqKN6YtARWSHGHZEFY9RRPTDoiKwc447IAjHqyEAMOiIbwrgjsiCMOjIAg47IRjHuiCwAo470xKAjIsYdkZIx6kgPDDoi0sG4I1IgRh3VQdFBxwMLE5kX445IQRh1VAtFB10FztARmR/jjkgBGHVUAwYdERmMcUdkRow6qgaDjogahHFHZAaMOqqEQUdERsO4I2pEjDq6C4OOiEyCcUfUCBh19F8MOiIyOcYdkQkx6ggMOiJqZIw7IhNg1Nk8Bh0RmQ3jjsiIGHU2jUFHRIrAuCMyAkadzVJ00PGbIohsE+OOqAEYdTZJ0UFXgTN0RLaLcUdUD4w6m8OgIyKLwbgjMgCjzqYw6IjIIjHuiPTAqLMZDDoisniMO6JaMOpsQhNDr3DgwAGEhYXBz88PKpUKn3/+eZ3XSU1NRUhICJydnXHvvfdiw4YN9RkrEVG1VCogJARYtQo4l+uA9HRg4ezm8L/6FPDRPtiv+w1Ieh84MxQoszP3cIkal/MNlE0eilsexzB4aCmOHDH3gMgUDA66mzdvolu3bnjvvff0Wj83NxejR49Gv379cPz4cSxduhTz5s1DQkKCwYMlIqoL446oGow6q9egl1xVKhUSExMRHh5e4zpLlixBUlISMjMztctmzpyJn376CWlpaXrthy+5ElFD8WVZIvDlVytm8AydodLS0jB8+HCdZSNGjEB6ejpKSkqqvY5Go0FhYaHOiYioIThzRwTO1Fkxkwddfn4+vL29dZZ5e3ujtLQUV65cqfY60dHR8PDw0J78/f1NPUwisiH6x90Qxh1ZH0adVTJ50AF3Xpq9W8WrvJWXV4iKisL169e1pwsXLph8jERkm2qPu28Yd2SdGHVWx+RB5+Pjg/z8fJ1lBQUFsLe3R4sWLaq9jpOTE9Rqtc6JiMjUGHdkUxh1VsXkQRcaGop9+/bpLNu7dy969eoFBwcHU++eiKheGHdkExh1VsPgoCsqKkJGRgYyMjIA3DksSUZGBs6fPw/gzsul06ZN064/c+ZMnDt3DgsWLEBmZiY2bdqEDz74AIsWLTLOLSAiMjHGHVk1Rp1VMPiwJSkpKRg0aFCV5ZGRkdi8eTOmT5+Os2fPIiUlRXtZamoq5s+fj5MnT8LPzw9LlizBzJkz9d4nD1tCREpU+6FQ/gkEpvBQKGQ5eEgTi8av/iIiMgLGHVkFRp3FYtARERkZ444sGqPOIjHoiIhMiHFHFolRZ3EYdEREjYRxRxaFUWdRFB10MTExiImJQVlZGbKzsxl0RGQ1GHdkERh1FkPRQVeBM3REZM0Yd6RojDqLwKAjIlIQxh0pEqNO8Rh0REQKxbgjRWHUKRqDjojIAjDuSBEYdYrFoCMisjCMOzIrRp0iMeiIiCwY447MglGnOAw6IiIrwbijRsWoUxQGHRGRFWLcUaNg1CmGooOOBxYmImo4xh2ZFKNOERQddBU4Q0dEZByMOzIJRp3ZMeiIiGwU446MilFnVgw6IiJi3JFxMOrMhkFHREQ6GHfUIIw6s2DQERFRjRh3VC+MukbHoCMiIr0w7sggjLpGxaAjIiKDMe5IL4y6RsOgIyKiBmHcUa0YdY1C0UHHAwsTEVkWxh1Vi1FncooOugqcoSMisjyMO9LBqDMpBh0REZkc444AMOpMiEFHRESNinFn4xh1JsGgIyIis2Hc2ShGndEx6IiISBEYdzaGUWdUDDoiIlIcxp2NYNQZDYOOiIgUjXFn5Rh1RsGgIyIii8G4s1KMugZj0BERkUVi3FkZRl2DKDro+E0RRESkD8adlWDU1Zuig64CZ+iIiEhfjDsLx6irFwYdERFZLcadhWLUGYxBR0RENoFxZ2EYdQZh0BERkc1h3FkIRp3emtTnSn//+98RFBQEZ2dnhISE4Lvvvqtx3ZSUFKhUqiqnU6dO1XvQREREDaFSASEhwKpVwLlcB6SnAwtnN4f/1aeAj76B/brfgKT3gTNDgDI7cw/XdjnfQNnkobjlcQyDh5biyBFzD0i5DA667du344UXXsCyZctw/Phx9OvXD6NGjcL58+drvV5WVhby8vK0p/vuu6/egyYiIjIWxp3CMer0YvBLrg8++CB69uyJ2NhY7bKOHTsiPDwc0dHRVdZPSUnBoEGDcO3aNTRr1qxeg+RLrkRE1Nj4sqzC8OXXWhk0Q1dcXIyjR49i+PDhOsuHDx+OQ4cO1XrdHj16wNfXF0OGDEFycnKt62o0GhQWFuqciIiIGhNn7hSGM3W1Mijorly5grKyMnh7e+ss9/b2Rn5+frXX8fX1RVxcHBISErBjxw4EBwdjyJAhOHDgQI37iY6OhoeHh/bk7+9vyDCJiIiMinGnEIy6Ghn0kuvly5fRqlUrHDp0CKGhodrlr732Gj766CO9P+gQFhYGlUqFpKSkai/XaDTQaDTa84WFhfD39+dLrkREpCh8WdZM+PJrFQbN0N1zzz2ws7OrMhtXUFBQZdauNg899BBycnJqvNzJyQlqtVrnREREpDScuTMTztRVYVDQOTo6IiQkBPv27dNZvm/fPvTp00fv7Rw/fhy+vr6G7JqIiEjRGHeNjFGnw+BPuW7fvh1Tp07Fhg0bEBoairi4OGzcuBEnT55EQEAAoqKicOnSJWzZsgUAsH79egQGBqJz584oLi7Gxx9/jFWrViEhIQFPPPGEXvvkp1yJiMhS8WVZE+PLrwAAe0OvEBERgatXr+LVV19FXl4eunTpgq+++goBAQEAgLy8PJ1j0hUXF2PRokW4dOkSXFxc0LlzZ+zatQujR4823q0gIiJSqIqZu5AQIDra4b9x1xxbtz2FCx89y7hrqIqZuk++weChtht1/OovIiIiM+DMnZHZ+Ewdg46IiMjMGHdGYsNRx6AjIiJSEMZdA9lo1DHoiIiIFIpxV082GHWKDrqYmBjExMSgrKwM2dnZDDoiIrJZjDsD2VjUKTroKnCGjoiI6H8Yd3qyoahj0BEREVkwxl0dbCTqGHRERERWgnFXAxuIOgYdERGRFWLcVWLlUcegIyIisnKMu/+y4qhj0BEREdkQm487K406Bh0REZGNstm4s8KoY9ARERGR7cWdlUWdooOOBxYmIiJqfDYTd1YUdYoOugqcoSMiIjIPq487K4k6Bh0RERHpxWrjzgqijkFHREREBrO6uLPwqGPQERERUYNYTdxZcNQx6IiIiMhoLD7uLDTqGHRERERkEhYbdxYYdQw6IiIiMjmLizsLizoGHRERETUqi4k7C4o6RQcdDyxMRERk3RQfdxYSdYoOugqcoSMiIrJ+io07C4g6Bh0REREpjuLiTuFRx6AjIiIiRVNM3Ck46hh0REREZDHMHncKjToGHREREVkks8WdAqOOQUdEREQWr9HjTmFRx6AjIiIiq9JocaegqGPQERERkdUyedwpJOoYdERERGQTTBZ3Cog6RQcdvymCiIiITMHocWfmqFN00FXgDB0RERGZitHizoxRx6AjIiIi+q8Gx52Zoo5BR0RERFSNesedGaKOQUdERERUB4PjrpGjjkFHREREZAC9464Ro45BR0RERFRPdcad71HYffq1yaOOQUdERERkBDXGXdvP0eRyKBxu3AevlnZQq4H33gMGDjTevs0WdCKCGzduVHuZRqOBRqPRnr9x4wY6deqECxcuMOiIiIhI8USAjAzg88+BzxJKcOmCAwABoAIAqNVATg7g7Fz3ttzd3aFSqWpdx2xBVzHrRkREREQ10+cVSouYocvLy8MDDzyAX375Ba1atWrwvnv37o0jR440eDvG3JYSx1RYWAh/f3+jzYwq8TYac1u83y17W7zfzbctY973Srx9St2WUn/nlXhfGWNbt24BgwcDv/xy53z//qXYudNer+vqM0On35ZMQKVSGfwL5O7ubpRfOjs7O6O9dGusbSlxTBXUarVV30Yl/gwB3u/m2hbvd/NsCzDOfa/U26fUbQHK+51X6n3V0G2p1cChQ8AHH9zCwoWzkZCw3qg/xyZG25IFmT17tuK2pcQxGZtSb6MSf4bGpMT7SsnbMhal3j6lbstYlHr7lLotY1Lic6nStuXhATz9dAmAeDg6NnxMd7OIT7levHhROy3cunVrcw/HZvDTxebB+908eL+bD+978+D9bh6mut8tYobOyclJ519qHE5OTli+fDnv90bG+908eL+bD+978+D9bh6mut8tYoaOf0UQERER1cwigq7iE7H6fMqDiIiIyNZYRNARERERUc0s4j10RERERFQzBh0RERGRhWPQURUHDhxAWFgY/Pz8oFKp8Pnnn5t7SDYhOjoavXv3hru7O7y8vBAeHo6srCxzD8vqxcbGomvXrtqDq4aGhmL37t3mHpbNiY6OhkqlwgsvvGDuoVi1FStWQKVS6Zx8fHzMPSybcOnSJUyZMgUtWrSAq6srunfvjqNHjxpt+ww6quLmzZvo1q0b3nvvPXMPxaakpqZi9uzZOHz4MPbt24fS0lIMHz4cN2/eNPfQrFrr1q2xatUqpKenIz09HYMHD8aYMWNw8uRJcw/NZhw5cgRxcXHo2rWruYdiEzp37oy8vDzt6cSJE+YektW7du0a+vbtCwcHB+zevRu//PIL3nzzTTRr1sxo+zDbV3+Rco0aNQqjRo0y9zBszp49e3TOx8fHw8vLC0ePHkX//v3NNCrrFxYWpnP+tddeQ2xsLA4fPozOnTubaVS2o6ioCJMnT8bGjRvxt7/9zdzDsQn29vaclWtkb7zxBvz9/REfH69dFhgYaNR9cIaOSKGuX78OAPD09DTzSGxHWVkZtm3bhps3byI0NNTcw7EJs2fPxiOPPIKhQ4eaeyg2IycnB35+fggKCsKECRPw66+/mntIVi8pKQm9evXCuHHj4OXlhR49emDjxo1G3QeDjkiBRAQLFizAww8/jC5duph7OFbvxIkTcHNzg5OTE2bOnInExER06tTJ3MOyetu2bcOxY8cQHR1t7qHYjAcffBBbtmzB119/jY0bNyI/Px99+vTB1atXzT00q/brr78iNjYW9913H77++mvMnDkT8+bNw5YtW4y2D77kSqRAc+bMwc8//4yDBw+aeyg2ITg4GBkZGfjjjz+QkJCAyMhIpKamMupM6MKFC3j++eexd+9eODs7m3s4NuPut9Pcf//9CA0NRdu2bfHhhx9iwYIFZhyZdSsvL0evXr3w+uuvAwB69OiBkydPIjY2FtOmTTPKPjhDR6Qwc+fORVJSEpKTk9G6dWtzD8cmODo6ol27dujVqxeio6PRrVs3vP322+YellU7evQoCgoKEBISAnt7e9jb2yM1NRXvvPMO7O3tUVZWZu4h2oSmTZvi/vvvR05OjrmHYtV8fX2r/IHYsWNHnD9/3mj74AwdkUKICObOnYvExESkpKQgKCjI3EOyWSICjUZj7mFYtSFDhlT5dOVTTz2FDh06YMmSJbCzszPTyGyLRqNBZmYm+vXrZ+6hWLW+fftWOQxVdnY2AgICjLYPBh1VUVRUhNOnT2vP5+bmIiMjA56enmjTpo0ZR2bdZs+eja1bt+KLL76Au7s78vPzAQAeHh5wcXEx8+is19KlSzFq1Cj4+/vjxo0b2LZtG1JSUqp86piMy93dvcr7Q5s2bYoWLVrwfaMmtGjRIoSFhaFNmzYoKCjA3/72NxQWFiIyMtLcQ7Nq8+fPR58+ffD6669j/Pjx+PHHHxEXF4e4uDij7YNBR1Wkp6dj0KBB2vMV76uIjIzE5s2bzTQq6xcbGwsAGDhwoM7y+Ph4TJ8+vfEHZCP+85//YOrUqcjLy4OHhwe6du2KPXv2YNiwYeYeGpHRXbx4ERMnTsSVK1fQsmVLPPTQQzh8+LBRZ4qoqt69eyMxMRFRUVF49dVXERQUhPXr12Py5MlG24dKRMRoWyMiIiKiRscPRRARERFZOAYdERERkYVj0BERERFZOAYdERERkYVj0BERERFZOAYdERERkYVj0BERERFZOAYdERERkYVj0BERERFZOAYdERERkYVj0BERERFZOAYdERERkYX7/xQlJW+kWi9dAAAAAElFTkSuQmCC\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 }