Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Computation of exponent conductor takes too long #80

Open
swewers opened this issue Aug 5, 2018 · 10 comments
Open

Computation of exponent conductor takes too long #80

swewers opened this issue Aug 5, 2018 · 10 comments
Assignees
Labels
performance Something isn't as fast as it should be

Comments

@swewers
Copy link
Contributor

swewers commented Aug 5, 2018

The following examples takes too long:

sage: from mclf import *
sage: R.<x> = QQ[]
sage: f = 36*x^4 - 10584*x^2 + 227808*x - 1752300
sage: Y = SuperellipticCurve(f, 3)
sage: v3 = QQ.valuation(3)
sage: YY3 = SemistableModel(Y, v3)
sage: YY3.conductor_exponent()

The curve has potentially good reduction over an extension L of QQ_3 of degree 216 =8*27, so it is clear that this will be computationally expensive. The bottleneck seems to be the computation of a subfield of L of degree 72.

@swewers swewers added the performance Something isn't as fast as it should be label Aug 5, 2018
@swewers
Copy link
Contributor Author

swewers commented Aug 5, 2018

The first steps take somewhat long, but are ok:

sage: YY3.etale_locus()
Elementary affinoid defined by v(x^9 - 8820/11x^7 + 265776/11x^6 - 1331910/11x^5 -78138144/11x^4 + 1784634684/11x^3 - 18273732624/11x^2 + 81629122419/11*x - 63348949888/11) >= 99/8
sage: YY3.is_semistable()
True

The trouble is here:

sage: Z = YY3.reduction_tree().inertial_components()[1]
sage: Z
inertial component of reduction tree with interior Elementary affinoid defined by v(x^9 - 8820/11x^7 + 265776/11x^6 - 1331910/11x^5 - 78138144/11x^4 + 1784634684/11x^3 - 18273732624/11x^2 + 81629122419/11x - 63348949888/11) >= 99/8
sage: L = Z.splitting_field()
sage: L
3-adic completion of Number Field in pi216 with defining polynomial x^216 + 2160
x^208 + 351x^200 + 1341x^192 + 459x^184 + 999x^176 + 315x^168 + 1080x^160 + 540x^152 + 1836x^144 + 243x^136 + 972x^128 + 897x^120 + 1125x^112 + 1602x^104 + 690x^96 + 1413x^88 + 2124x^80 + 1536x^72 + 837x^64 + 621x^56 + 1689x^48 + 1692x^40 + 1035x^32 + 1392x^24 + 1224x^16 + 1584*x^8 + 267 as weak Galois extension of 3-adic completion of Rational Field

sage: L.ramification_filtration()
[(0, 216), (1, 27), (100, 3)]
sage: L.ramification_subfields()

@swewers
Copy link
Contributor Author

swewers commented Aug 5, 2018

I wonder if the performance is better with the new Sage version where 25607 has been integrated.
Since this ticket is closed now, does it mean that the current development version has it?

@JRSijsling
Copy link

JRSijsling commented Aug 5, 2018

I just pulled the new version 8.3 from the master branch and rebuilt SageMath. I do not see the changes in said ticket.

@saraedum
Copy link
Member

saraedum commented Aug 5, 2018

25607 has not been merged yet btw.

@saraedum
Copy link
Member

saraedum commented Dec 8, 2018

Since 25607 has been merge into 8.4, could you try again with 8.4?

@JRSijsling
Copy link

Will do!

@JRSijsling
Copy link

Scratch that response since your remark was not meant for me...

@saraedum
Copy link
Member

saraedum commented Dec 12, 2018

@JRSijsling actually I meant you ;)

@JRSijsling
Copy link

Oh yeah :-)

The changes are there all right. But I get errors now, and not only in this example. When I do the curve at the beginning of this issue, I get an error ending in:

/Users/jrsijsling/.sage/local/lib/python2.7/site-packages/mclf/semistable_reduction/reduction_trees.pyc in make_function_field(K)
   1276         # to construct phi:K=K_0[x]/(G) --> F=F_0[y]/(G),
   1277         # we first 'map' from K to K_0[x]
-> 1278         phi = K.hom(R.gen(), R, check=False)
   1279         # then from K_0[x] to F_0[y]
   1280         psi = R.hom(phi_base, R_new)

TypeError: hom() got an unexpected keyword argument 'check'

I tracked that down and removed that keyword argument. But then it says that it has problems with codomain. So something seems no longer to be compatible.

@saraedum
Copy link
Member

I think @swewers has to explain what is supposed to happen here in the first place. The method make_function_field is trying to construct a morphism from K to F in this case with

ipdb> print K
Function field in u2 defined by u2^3 + u2 + 2*x^4
ipdb> print F
Function field in y defined by y^3 + y + 2*x^4
ipdb> print F.base_ring()
Rational function field in x over Finite Field of size 3
ipdb> print K.base_ring()
Rational function field in x over Finite Field of size 3

So, there does not seem to be the need to complicate things here. Then again, I don't really understand what this method is supposed to do since its documentation says:

    OUTPUT: A triple `(F,\phi,\psi)`, where `F` is a rational function field,
    `\phi:K\to F` is a field isomorphism and `\psi` the inverse of `\phi`.

So, I guess this should not say rational here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Something isn't as fast as it should be
Projects
None yet
Development

No branches or pull requests

3 participants