zaczynamy crystalline

This commit is contained in:
jgarnek 2022-05-05 08:48:52 +00:00
parent 0e34637387
commit 43c28ea23c
4 changed files with 814 additions and 2302 deletions

32
crystalline_p2.ipynb Normal file
View File

@ -0,0 +1,32 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
]
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 9.5",
"language": "sagemath",
"metadata": {
"cocalc": {
"description": "Open-source mathematical software system",
"priority": 10,
"url": "https://www.sagemath.org/"
}
},
"name": "sage-9.5",
"resource_dir": "/ext/jupyter/kernels/sage-9.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

View File

@ -2,7 +2,9 @@
"cells": [ "cells": [
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {
"collapsed": false
},
"source": [ "source": [
"# Theory\n", "# Theory\n",
"Let $C : y^m = f(x)$. Then:\n", "Let $C : y^m = f(x)$. Then:\n",
@ -23,8 +25,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": 2,
"metadata": {}, "metadata": {
"outputs": [], "collapsed": false
},
"outputs": [
],
"source": [ "source": [
"# The program computes the basis of holomorphic differentials of y^m = f(x) in char p.\n", "# The program computes the basis of holomorphic differentials of y^m = f(x) in char p.\n",
"# The coefficient j means that we compute the j-th eigenpart, i.e.\n", "# The coefficient j means that we compute the j-th eigenpart, i.e.\n",
@ -47,8 +52,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 3,
"metadata": {}, "metadata": {
"outputs": [], "collapsed": false
},
"outputs": [
],
"source": [ "source": [
"# The program computes the basis of de Rham cohomology of y^m = f(x) in char p.\n", "# The program computes the basis of de Rham cohomology of y^m = f(x) in char p.\n",
"# We treat them as pairs [omega, f], where omega is regular on the affine part\n", "# We treat them as pairs [omega, f], where omega is regular on the affine part\n",
@ -80,8 +88,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 4,
"metadata": {}, "metadata": {
"outputs": [], "collapsed": false
},
"outputs": [
],
"source": [ "source": [
"#auxiliary programs\n", "#auxiliary programs\n",
"def stopnie_bazy_holo(m, f, j, p):\n", "def stopnie_bazy_holo(m, f, j, p):\n",
@ -201,7 +212,9 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {
"collapsed": false
},
"source": [ "source": [
"We have: $V(\\omega, f) = (C(\\omega), 0)$ and $F(\\omega, f) = (0, f^p)$, where C denotes the Cartier operator. Moreover:\n", "We have: $V(\\omega, f) = (C(\\omega), 0)$ and $F(\\omega, f) = (0, f^p)$, where C denotes the Cartier operator. Moreover:\n",
"\n", "\n",
@ -214,8 +227,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 5,
"metadata": {}, "metadata": {
"outputs": [], "collapsed": false
},
"outputs": [
],
"source": [ "source": [
"def czesc_wielomianu(p, h):\n", "def czesc_wielomianu(p, h):\n",
" R.<x> = PolynomialRing(GF(p))\n", " R.<x> = PolynomialRing(GF(p))\n",
@ -254,7 +270,9 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {
"collapsed": false
},
"source": [ "source": [
"$F((\\omega, P(x) \\cdot y^j)) = (0, P(x)^p \\cdot y^{p \\cdot j}) = (0, P(x)^p \\cdot f(x)^{[p \\cdot j/m]} \\cdot y^{(p \\cdot j) \\, mod \\, m})$" "$F((\\omega, P(x) \\cdot y^j)) = (0, P(x)^p \\cdot y^{p \\cdot j}) = (0, P(x)^p \\cdot f(x)^{[p \\cdot j/m]} \\cdot y^{(p \\cdot j) \\, mod \\, m})$"
] ]
@ -262,8 +280,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 6,
"metadata": {}, "metadata": {
"outputs": [], "collapsed": false
},
"outputs": [
],
"source": [ "source": [
"def frobenius_dr(p, m, f, elt, j): #Cartier na y^m = f dla elt = [forma rozniczkowa, fkcja]\n", "def frobenius_dr(p, m, f, elt, j): #Cartier na y^m = f dla elt = [forma rozniczkowa, fkcja]\n",
" R.<x> = PolynomialRing(GF(p))\n", " R.<x> = PolynomialRing(GF(p))\n",
@ -348,7 +369,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 243, "execution_count": 243,
"metadata": {}, "metadata": {
"collapsed": false
},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
@ -395,7 +418,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 241, "execution_count": 241,
"metadata": {}, "metadata": {
"collapsed": false
},
"outputs": [ "outputs": [
{ {
"data": { "data": {
@ -407,7 +432,8 @@
] ]
}, },
"execution_count": 241, "execution_count": 241,
"metadata": {}, "metadata": {
},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
@ -418,7 +444,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 247, "execution_count": 247,
"metadata": {}, "metadata": {
"collapsed": false
},
"outputs": [ "outputs": [
{ {
"data": { "data": {
@ -428,7 +456,8 @@
] ]
}, },
"execution_count": 247, "execution_count": 247,
"metadata": {}, "metadata": {
},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
@ -439,7 +468,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 249, "execution_count": 249,
"metadata": {}, "metadata": {
"collapsed": false
},
"outputs": [ "outputs": [
{ {
"data": { "data": {
@ -448,7 +479,8 @@
] ]
}, },
"execution_count": 249, "execution_count": 249,
"metadata": {}, "metadata": {
},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
@ -459,7 +491,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 8,
"metadata": {}, "metadata": {
"collapsed": false
},
"outputs": [ "outputs": [
{ {
"data": { "data": {
@ -468,7 +502,8 @@
] ]
}, },
"execution_count": 8, "execution_count": 8,
"metadata": {}, "metadata": {
},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
@ -482,17 +517,29 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 0,
"metadata": {}, "metadata": {
"outputs": [], "collapsed": false
"source": [] },
"outputs": [
],
"source": [
]
} }
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 9.1", "display_name": "SageMath 9.5",
"language": "sage", "language": "sagemath",
"name": "sagemath" "metadata": {
"cocalc": {
"description": "Open-source mathematical software system",
"priority": 10,
"url": "https://www.sagemath.org/"
}
},
"name": "sage-9.5",
"resource_dir": "/ext/jupyter/kernels/sage-9.5"
}, },
"language_info": { "language_info": {
"codemirror_mode": { "codemirror_mode": {
@ -508,5 +555,5 @@
} }
}, },
"nbformat": 4, "nbformat": 4,
"nbformat_minor": 2 "nbformat_minor": 4
} }

View File

@ -655,7 +655,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 3,
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
@ -667,7 +667,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 3,
"metadata": { "metadata": {
"collapsed": false "collapsed": false
}, },
@ -681,6 +681,29 @@
"C = superelliptic(f, m, p)" "C = superelliptic(f, m, p)"
] ]
}, },
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1/y"
]
},
"execution_count": 7,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"C.basis_holomorphic_differentials[0].form"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13, "execution_count": 13,
@ -2103,6 +2126,376 @@
"print(\"Current Time =\", current_time)" "print(\"Current Time =\", current_time)"
] ]
}, },
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"p = 7\n",
"R.<x> = PolynomialRing(GF(p))\n",
"f = x^3 + x + 1\n",
"m = 2\n",
"C = superelliptic(f, m, p)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[((1/y) dx, 0, (1/y) dx), ((x/y) dx, 2/x*y, ((x + 2)/(x^2*y)) dx)]"
]
},
"execution_count": 13,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"C.basis_de_rham"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"w = C.basis_de_rham[1]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"w0 = w.f"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 9,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"w0.is_regular_on_U0()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((x^3 - x - 2)/(x^2*y)) dx"
]
},
"execution_count": 11,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"diffn(w0)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"p = 7\n",
"R.<x> = PolynomialRing(GF(p))\n",
"d = 9\n",
"f = sum(x^i * (d+1-i) for i in range(0, d+1))\n",
"m = 2\n",
"C = superelliptic(f, m, p)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[((1/y) dx, 0, (1/y) dx),\n",
" ((x/y) dx, 0, (x/y) dx),\n",
" ((x^2/y) dx, 0, (x^2/y) dx),\n",
" ((x^3/y) dx, 0, (x^3/y) dx),\n",
" (((-2*x^6 + x^5 + 2*x^4 + x^3 - 2*x^2)/y) dx, 2/x*y, ((2*x - 1)/(x^2*y)) dx),\n",
" (((-2*x^6 + x^5 + 2*x^4 + x^3 - 2*x^2)/y) dx, 2/x^2*y, ((2*x^2 - x - 2)/(x^3*y)) dx),\n",
" (((3*x^5 - 3*x^4 + 3*x^3 + 2*x + 2)/y) dx, 2/x^3*y, ((-3*x^2 + 3*x - 3)/(x^4*y)) dx),\n",
" (((x^4 - 3*x^2 - x - 1)/y) dx, 2/x^4*y, ((3*x^4 - x^2 + 3)/(x^5*y)) dx)]"
]
},
"execution_count": 10,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"C.basis_de_rham"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[((1/y) dx, 0, (1/y) dx), ((x/y) dx, 2/x*y, (1/(x*y)) dx)]"
]
},
"execution_count": 17,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"p = 13\n",
"R.<x> = PolynomialRing(GF(p))\n",
"f = x^3 + x\n",
"m = 2\n",
"C = superelliptic(f, m, p)\n",
"C.basis_de_rham"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 10,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"R(f*f(1/x)*x^3).discriminant()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[((1/y) dx, 0, (1/y) dx), ((x/y) dx, 2/x*y, ((x + 2)/(x^2*y)) dx)]"
]
},
"execution_count": 11,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"p = 19\n",
"R.<x> = PolynomialRing(GF(p))\n",
"f = x^3 + x + 1\n",
"m = 2\n",
"C = superelliptic(f, m, p)\n",
"C.basis_de_rham"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[((1/y) dx, 0, (1/y) dx), ((x/y) dx, 2/x*y, ((-1)/(x*y)) dx)]"
]
},
"execution_count": 4,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"p = 3\n",
"R.<x> = PolynomialRing(GF(p))\n",
"f = x^3 -x\n",
"m = 2\n",
"C = superelliptic(f, m, p)\n",
"C.basis_de_rham"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"R.<x, y> = PolynomialRing(GF(p), 2)\n",
"s = superelliptic_function(C, 2*y/(x*(x+1)))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((-x^2 - x + 1)/(x^2*y + x*y)) dx"
]
},
"execution_count": 9,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"diffn(s)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"o1 = superelliptic_cech(C, superelliptic_form(C, (x+1)/y), superelliptic_function(C, 2*y/(x+1)))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"o2 = superelliptic_cech(C, superelliptic_form(C, x/y), superelliptic_function(C, 2*y/x))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"o3 = superelliptic_cech(C, superelliptic_form(C, 1/y), superelliptic_function(C, 0))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"o4 = o1 - o2 - o3"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0 dx, (1/(x^2 + x))*y, ((-x^2 - x + 1)/(x^2*y + x*y)) dx)"
]
},
"execution_count": 14,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"o4"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 0, "execution_count": 0,

File diff suppressed because it is too large Load Diff