Package: mclf
MCLFA Sage toolbox for computing withModels ofCurves overLocalFieldsThis is still a rather immature version of our toolbox. Nevertheless, you can
use it to compute, for a large class of curves over the rationals, the stable
reduction at primes of bad reduction.Let Y be a smooth projective curve over a field K and let vK be a discrete valuation on K.
The principal goal is to compute  thesemistable reductionof Y with respect to vK.
This means that we want to knowa finite Galois extension L/K,an extension vL of vK to L,the special fiber of an integral semistable model of Y over the valuation
ring of vL, andthe action of the decomposition group of vL on that special fiber.At the moment we can do this only in certain special cases, which should
nevertheless be useful.If you have at leastSage 8.2you can install the
latest version of this package withsage -pip install --user --upgrade mclf.If you can not install Sage on your local machine, you can also clickto run an interactive Jupyter notebook with mclf preinstalled.The package can be loaded withsage: from mclf import *We create a Picard curve over the rational number field.sage: R.<x> = QQ[]
sage: Y = SuperellipticCurve(x^4-1, 3)
sage: Y
superelliptic curve y^3 = x^4 - 1 over Rational FieldIn general, the classSuperellipticCurveallows you to create a superelliptic curve of the form yn= f(x),
for a polynomial f over an arbitrary field K. But you can also define any smooth projective curve Y with given
function field.We define the 2-adic valuation on the rational field. Then we are able to create an
object of the classSemistableModelwhich represents a semistable model of the curve Y with respect to the 2-adic
valuation.sage: v_2 = QQ.valuation(2)
sage: Y2 = SemistableModel(Y, v_2)
sage: Y2.is_semistable() # this may take a while
TrueThe stable reduction of Y at p=2 has four components, one of genus 0 and
three of genus 1.sage: [Z.genus() for Z in Y2.components()]
[0, 1, 1, 1]
sage: Y2.components_of_positive_genus()
[the smooth projective curve with Function field in y defined by y^3 + x^4 + x^2,
 the smooth projective curve with Function field in y defined by y^3 + x^2 + x,
 the smooth projective curve with Function field in y defined by y^3 + x^2 + x + 1]We can also extract some arithmetic information on the curve Y from the stable reduction.
For instance, we can compute theconductor exponentof Y at p=2:sage: Y2.conductor_exponent()
6Now let us compute the semistable reduction of Y at p=3:sage: v_3 = QQ.valuation(3)
sage: Y3 = SemistableModel(Y, v_3)
sage: Y3.is_semistable()
True
sage: Y3.components_of_positive_genus()
[the smooth projective curve with Function field in y defined by y^3 + y + 2*x^4]We see that Y has potentially good reduction at p=3. The conductor exponent is:sage: Y3.conductor_exponent()
6For more details on the functionality and the restrictions of the toolbox, see theDocumentation.
For the mathematical background seeJ. Rüth,Models of Curves and Valuations, PhD thesis, Ulm University, 2014I.I. Bouw, S. Wewers,Computing L-Functions and semistable reduction of superellipic curves,
Glasgow Math. J., 59(1), 2017, 77-108I.I. Bouw, S. Wewers,Semistable reduction of curves and computation of bad Euler factors of L-functions,
lecture notes for a minicourse at ICERMS. Wewers, Semistable reduction of superelliptic curves of degree p, preprint, 2017Known bugs and issuesSee ourissues list, and tell us of any bugs or ommissions that are not covered there.Experimental ChangesWe also have an unstableexperimentalversion with the latest experimental features and bugs that you can try out by clicking on, note that this version currentlyour own test suite.Development workflowMost development happens on feature branches against themasterbranch. Themasterbranch is considered stable and usually we create a new release and
upload it to PyPI whenever there is something merged intomaster. We
sometimes collect a number of experimental changes on theexperimentalbranch.