diff --git a/superelliptic.ipynb b/superelliptic.ipynb index 6af5b96..6fb925f 100644 --- a/superelliptic.ipynb +++ b/superelliptic.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 67, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -160,11 +160,11 @@ " def p_rank(self):\n", " return self.cartier_matrix().rank()\n", " \n", - " def final_type(self):\n", + " def final_type(self, test = 0):\n", " F = self.frobenius_matrix()\n", " V = self.verschiebung_matrix()\n", " p = self.characteristic\n", - " return flag(F, V, p)\n", + " return flag(F, V, p, test)\n", " \n", "def reduction(C, g):\n", " p = C.characteristic\n", @@ -560,7 +560,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -580,12 +580,12 @@ " basis_image += [M*v]\n", " return V.subspace(basis_image)\n", "\n", - "def flag(F, V, p):\n", + "def flag(F, V, p, test = 0):\n", " dim = F.dimensions()[0]\n", " space = VectorSpace(GF(p), dim)\n", " flag_subspaces = (dim+1)*[0]\n", " flag_used = (dim+1)*[0]\n", - " final_type = (dim+1)*[-1]\n", + " final_type = (dim+1)*['?']\n", " \n", " flag_subspaces[dim] = space\n", " flag_used[dim] = 1\n", @@ -609,19 +609,29 @@ " flag_subspaces[d_pre] = U_pre\n", " flag_used[d_pre] = 1\n", " \n", + " if test == 1:\n", + " print('(', final_type, ')')\n", + " \n", " for i in range(0, dim+1):\n", - " if final_type[i] == -1 and final_type[dim - i] != -1:\n", + " if final_type[i] == '?' and final_type[dim - i] != '?':\n", " i1 = dim - i\n", " final_type[i] = final_type[i1] - i1 + dim/2\n", " \n", " final_type[0] = 0\n", + " \n", " for i in range(1, dim+1):\n", - " if final_type[i] == -1:\n", + " if final_type[i] == '?':\n", + " prev = final_type[i-1]\n", + " if prev != '?' and prev in final_type[i+1:]:\n", + " final_type[i] = prev\n", + " \n", + " for i in range(1, dim+1):\n", + " if final_type[i] == '?':\n", " final_type[i] = min(final_type[i-1] + 1, dim/2)\n", " \n", " if is_final(final_type, dim/2):\n", " return final_type[1:dim/2 + 1]\n", - " return 'error'\n", + " print('error:', final_type[1:dim/2 + 1])\n", " \n", "def is_final(final_type, dim):\n", " n = len(final_type)\n", @@ -639,1408 +649,255 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + x^8 + 8*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 2*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 2*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 2*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n" + "Current Time = 18:11:00\n", + "[1, 2, 3, 4, 5, 6]\n", + "Current Time = 18:11:21\n" ] - }, + } + ], + "source": [ + "now = datetime.now()\n", + "\n", + "current_time = now.strftime(\"%H:%M:%S\")\n", + "print(\"Current Time =\", current_time)\n", + "\n", + "p = 17\n", + "Rx. = PolynomialRing(GF(p))\n", + "C = superelliptic(x^13+x^8+x, 2, p)\n", + "print(C.final_type())\n", + "\n", + "now = datetime.now()\n", + "\n", + "current_time = now.strftime(\"%H:%M:%S\")\n", + "print(\"Current Time =\", current_time)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "def p_cov(C):\n", + " m = C.exponent\n", + " p = C.characteristic\n", + " f = C.polynomial\n", + " return superelliptic(f(x^p - x), m, p)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": false + }, + "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 7*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 3*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 3*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 4*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 4*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 5*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 5*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n" + "[1, 1, 2, 3] [1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11]\n" ] - }, + } + ], + "source": [ + "p = 3\n", + "Rx. = PolynomialRing(GF(p))\n", + "C = superelliptic(2*x^9+x^8+x, 2, p)\n", + "C1 = p_cov(C)\n", + "print(C.final_type(), C1.final_type())" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "x^9 + 6*x^8 + 2*x 3\n", + "( ['?', 1, 1, 2, 3, 3, 3, 4, 4] )\n", + "( ['?', '?', '?', '?', '?', 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, '?', 18, 19, 19, '?', 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, '?', '?', '?', '?', 22] )\n", + "[1, 1, 2, 3] [1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 19]\n" + ] + } + ], + "source": [ + "p = 5\n", + "Rx. = PolynomialRing(GF(p))\n", + "C = superelliptic(x^9+x^8+x, 2, p)\n", + "C1 = p_cov(C)\n", + "print(C.final_type(1), C1.final_type(1))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "22" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C1.genus()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x^9 + x^8 + x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", + "x^9 + x^8 + 2*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", + "x^9 + x^8 + 3*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", + "x^9 + x^8 + 4*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", + "x^9 + x^8 + 5*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", + "x^9 + x^8 + 6*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", + "x^9 + x^8 + 7*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", + "x^9 + x^8 + 8*x 3 0 0\n", + "(( [0, 0, 1, 2, 3, 3, 3, 3, 4] ))\n", "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", + "x^9 + x^8 + 9*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", + "x^9 + x^8 + x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", + "x^9 + x^8 + 2*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", + "x^9 + x^8 + 3*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", + "x^9 + x^8 + 4*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", + "x^9 + x^8 + 5*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", + "x^9 + x^8 + 6*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", + "x^9 + x^8 + 7*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", + "x^9 + x^8 + 8*x 3 0 0\n", + "(( [0, 0, 1, 2, 3, 3, 3, 3, 4] ))\n", "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", + "x^9 + x^8 + 9*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", + "x^9 + x^8 + x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", + "x^9 + x^8 + 2*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", + "x^9 + x^8 + 3*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", + "x^9 + x^8 + 4*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", + "x^9 + x^8 + 5*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", + "x^9 + x^8 + 6*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", + "x^9 + x^8 + 7*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", + "x^9 + x^8 + 8*x 3 0 0\n", + "(( [0, 0, 1, 2, 3, 3, 3, 3, 4] ))\n", "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 6*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 2*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 6*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 6*x^8 + 10*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 10*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 3*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 4*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 5*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 6*x 3\n", - "[0, 1, 2, 3]\n", - "x^9 + 7*x^8 + 7*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 8*x 3\n", - "[1, 2, 2, 3]\n", - "x^9 + 7*x^8 + 9*x 3\n" + "x^9 + x^8 + 9*x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", + "[1, 2, 2, 3]\n", + "x^9 + x^8 + x 3 2 0\n", + "(( ['?', '?', 2, 2, 3, 3, 4, '?', 4] ))\n", + "[1, 2, 2, 3]\n", + "x^9 + x^8 + 2*x 3 2 0\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolynomial\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mC\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mp_rank\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrank\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0midentity_matrix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrank\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mV\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mC\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mverschiebung_matrix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mF\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mC\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrobenius_matrix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mflag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mF\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mV\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfrobenius_matrix\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 135\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbasis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[0mw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbasis\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 137\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrobenius\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoordinates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 138\u001b[0m \u001b[0mM\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mM\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcoordinates\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 487\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoeff_of_rational_fctn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfct_j\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 488\u001b[0m \u001b[0melt\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0msuperelliptic_cech\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiffn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 489\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0melt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoordinates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 490\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 491\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvector\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcoordinates\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 487\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoeff_of_rational_fctn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfct_j\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 488\u001b[0m \u001b[0melt\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0msuperelliptic_cech\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiffn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 489\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0melt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoordinates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 490\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 491\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvector\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcoordinates\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoeff_of_rational_fctn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfct_j\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 476\u001b[0m \u001b[0melt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mbasis\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 477\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0melt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoordinates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mvector\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mGF\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 478\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 479\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcoordinates\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoeff_of_rational_fctn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfct_j\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 476\u001b[0m \u001b[0melt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mbasis\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 477\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0melt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoordinates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mvector\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mGF\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 478\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 479\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcoordinates\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 474\u001b[0m \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdegrees1_inv\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoeff_of_rational_fctn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfct_j\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 476\u001b[0;31m \u001b[0melt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mbasis\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 477\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0melt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoordinates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mvector\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mGF\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 478\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/element.pyx\u001b[0m in \u001b[0;36msage.structure.element.Element.__mul__ (build/cythonized/sage/structure/element.c:12169)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1527\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1528\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0mElement\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_mul_long\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1529\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcoercion_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbin_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmul\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1530\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1531\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mNotImplemented\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce.pyx\u001b[0m in \u001b[0;36msage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:11104)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1247\u001b[0m \u001b[0mmul_method\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'__r%s__'\u001b[0m\u001b[0;34m%\u001b[0m\u001b[0mop_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1248\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmul_method\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1249\u001b[0;31m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmul_method\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1250\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mNotImplemented\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1251\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m__rmul__\u001b[0;34m(self, constant)\u001b[0m\n\u001b[1;32m 415\u001b[0m \u001b[0mw1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0momega0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mform\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 416\u001b[0m \u001b[0mf1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfunction\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 417\u001b[0;31m \u001b[0mw2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msuperelliptic_form\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconstant\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mw1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 418\u001b[0m \u001b[0mf2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msuperelliptic_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconstant\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mf1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 419\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msuperelliptic_cech\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, C, g)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[0mRxy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPolynomialRing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mGF\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnames\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'y'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mRxy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_first_ngens\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0mFxy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mFractionField\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mRxy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 282\u001b[0;31m \u001b[0mg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mFxy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreduction_form\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 283\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mform\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 284\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcurve\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mC\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mreduction_form\u001b[0;34m(C, g)\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 206\u001b[0m \u001b[0mG\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 207\u001b[0;31m \u001b[0mg1\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mFxy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 208\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mg1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/element.pyx\u001b[0m in \u001b[0;36msage.structure.element.Element.__add__ (build/cythonized/sage/structure/element.c:10839)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;31m# Left and right are Sage elements => use coercion model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mBOTH_ARE_ELEMENT\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcoercion_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbin_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m \u001b[0mcdef\u001b[0m \u001b[0mlong\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce.pyx\u001b[0m in \u001b[0;36msage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:10120)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1205\u001b[0m \u001b[0;31m# Now coerce to a common parent and do the operation there\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1206\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1207\u001b[0;31m \u001b[0mxy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcanonical_coercion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1208\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1209\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_record_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce.pyx\u001b[0m in \u001b[0;36msage.structure.coerce.CoercionModel.canonical_coercion (build/cythonized/sage/structure/coerce.c:11635)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0mx_elt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1321\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0my_map\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1322\u001b[0;31m \u001b[0my_elt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0mMap\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0my_map\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1323\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1324\u001b[0m \u001b[0my_elt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce_maps.pyx\u001b[0m in \u001b[0;36msage.structure.coerce_maps.CallableConvertMap._call_ (build/cythonized/sage/structure/coerce_maps.c:7389)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 430\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 431\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 432\u001b[0;31m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 433\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 434\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mprint_warnings\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/fraction_field.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 316\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 317\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 318\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_element_class\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumerator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdenominator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 319\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 320\u001b[0m \u001b[0;31m# The case ``S`` being `\\QQ` requires special handling since `\\QQ` is\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/fraction_field_element.pyx\u001b[0m in \u001b[0;36msage.rings.fraction_field_element.FractionFieldElement_1poly_field.__init__ (build/cythonized/sage/rings/fraction_field_element.c:11744)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1115\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1116\u001b[0m \"\"\"\n\u001b[0;32m-> 1117\u001b[0;31m FractionFieldElement.__init__(self, parent, numerator, denominator,\n\u001b[0m\u001b[1;32m 1118\u001b[0m coerce, reduce)\n\u001b[1;32m 1119\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mreduce\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/fraction_field_element.pyx\u001b[0m in \u001b[0;36msage.rings.fraction_field_element.FractionFieldElement.__init__ (build/cythonized/sage/rings/fraction_field_element.c:2966)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcoerce\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 114\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__numerator\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mring\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumerator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 115\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__denominator\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mring\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdenominator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 116\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__numerator\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumerator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/parent.pyx\u001b[0m in \u001b[0;36msage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:9218)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 898\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmor\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 899\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mno_extra_args\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 900\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mmor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 901\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 902\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_with_args\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce_maps.pyx\u001b[0m in \u001b[0;36msage.structure.coerce_maps.NamedConvertMap._call_ (build/cythonized/sage/structure/coerce_maps.c:5949)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Cannot coerce {} to {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mC\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 286\u001b[0m \u001b[0mcdef\u001b[0m \u001b[0mMap\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 287\u001b[0;31m \u001b[0mcdef\u001b[0m \u001b[0mElement\u001b[0m \u001b[0me\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mC\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 288\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0me\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 289\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"BUG in coercion model: {} method of {} returned None\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/polynomial/multi_polynomial.pyx\u001b[0m in \u001b[0;36msage.rings.polynomial.multi_polynomial.MPolynomial._polynomial_ (build/cythonized/sage/rings/polynomial/multi_polynomial.c:6311)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[0mvar\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mR\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvariable_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 206\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvar\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_parent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvariable_names\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 207\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mR\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolynomial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_parent\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 208\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mR\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/polynomial/multi_polynomial.pyx\u001b[0m in \u001b[0;36msage.rings.polynomial.multi_polynomial.MPolynomial.polynomial (build/cythonized/sage/rings/polynomial/multi_polynomial.c:8657)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 485\u001b[0m w = {remove_from_tuple(e, ind): val\n\u001b[1;32m 486\u001b[0m for e, val in self.dict().iteritems() if not e[ind]}\n\u001b[0;32m--> 487\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# coefficients that don't involve var\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 488\u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvar\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 489\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/parent.pyx\u001b[0m in \u001b[0;36msage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:9218)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 898\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmor\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 899\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mno_extra_args\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 900\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mmor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 901\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 902\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_with_args\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce_maps.pyx\u001b[0m in \u001b[0;36msage.structure.coerce_maps.DefaultConvertMap_unique._call_ (build/cythonized/sage/structure/coerce_maps.c:4448)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 154\u001b[0m \u001b[0mcdef\u001b[0m \u001b[0mParent\u001b[0m \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_codomain\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 155\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 156\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mC\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_element_constructor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 157\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 158\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mprint_warnings\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/polynomial/polynomial_ring.py\u001b[0m in \u001b[0;36m_element_constructor_\u001b[0;34m(self, x, check, is_gen, construct, **kwds)\u001b[0m\n\u001b[1;32m 466\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrings\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpower_series_ring_element\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPowerSeries\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 467\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtruncate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 468\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mC\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcheck\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mis_gen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconstruct\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconstruct\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 469\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 470\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mclassmethod\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32msrc/cysignals/signals.pyx\u001b[0m in \u001b[0;36mcysignals.signals.python_check_interrupt\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -2052,7 +909,8 @@ " Rx. = PolynomialRing(GF(p))\n", " C = superelliptic(x^9+a*x^8+c*x, 2, p)\n", " if C.is_smooth() and C.p_rank() == 3:\n", - " print(C.polynomial, C.p_rank())\n", + " M = C.cartier_matrix()\n", + " print(C.polynomial, C.p_rank(), (M^4).rank(), 4 - (M-identity_matrix(4)).rank())\n", " V = C.verschiebung_matrix()\n", " F = C.frobenius_matrix()\n", " print(flag(F, V, p))" @@ -2060,22 +918,20 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 12, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{0: 1/y, 1: x/y, 2: x^2/y, 3: x^3/y}" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[(1/y) dx, (x/y) dx, (x^2/y) dx, (x^3/y) dx]\n" + ] } ], "source": [ - "holomorphic_differentials_basis(x^9+3*x^3+x^2+x+1, 2, 5)" + "C = superelliptic(x^9+x^8+x, 2, 11)\n", + "print(C.basis_holomorphic_differentials)" ] }, {