Skip to main content

A Sage toolbox for computing with Models of Curves over Local Fields

Project description

MCLF

Documentation Status CircleCI Coverage Status asv PyPI

A Sage toolbox for computing with Models of Curves over Local Fields

This 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 the semistable reduction of Y with respect to vK. This means that we want to know

  • a 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, and
  • the 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 least Sage 8.2 you can install the latest version of this package with sage -pip install --user --upgrade mclf.

If you can not install Sage on your local machine, you can also click Launch on mybinder.org to run an interactive Jupyter notebook with mclf preinstalled.

The package can be loaded with

sage: 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 Field

In general, the class SuperellipticCurve allows 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 class SemistableModel which 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
True

The 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 the conductor exponent of Y at p=2:

sage: Y2.conductor_exponent()
6

Now 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()
6

For more details on the functionality and the restrictions of the toolbox, see the Documentation. For the mathematical background see

Known bugs and issues

See our issues list, and tell us of any bugs or ommissions that are not covered there.

Experimental Changes

We also have an unstable experimental version with the latest experimental features and bugs that you can try out by clicking on Launch on mybinder.org, note that this version currently CircleCI our own test suite.

Development workflow

Most development happens on feature branches against the master branch. The master branch is considered stable and usually we create a new release and upload it to PyPI whenever there is something merged into master. We sometimes collect a number of experimental changes on the experimental branch.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

mclf-1.0.4-py3-none-any.whl (119.2 kB view details)

Uploaded Python 3

mclf-1.0.4-py2-none-any.whl (119.2 kB view details)

Uploaded Python 2

File details

Details for the file mclf-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: mclf-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0

File hashes

Hashes for mclf-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 469e8eb6d6b3826a59b5bbaea4a91bf0f7ef54163d1a257b2d5158893a0dc559
MD5 32a0e009f1b2b4009d34540e61a34dc0
BLAKE2b-256 6db6a7372987bfd0b52653b484d01c348dc21327c356f747e4bd510ea94e4037

See more details on using hashes here.

File details

Details for the file mclf-1.0.4-py2-none-any.whl.

File metadata

  • Download URL: mclf-1.0.4-py2-none-any.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0

File hashes

Hashes for mclf-1.0.4-py2-none-any.whl
Algorithm Hash digest
SHA256 b203c22f4ae1513245a7d15026e67c5be59c70a19b94bba21a3e29f752fa52dd
MD5 a0f0c9cd0aa95b3967e2bb284ab6c309
BLAKE2b-256 9a32a7e26e51d531c1c5e357bacfffb1fd10f11a7bdd81c00b8086e9410e6003

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page