MCLF / mclf

A Sage toolbox for computations with Models of Curves over Local Fields
GNU General Public License v2.0
7 stars 3 forks source link

Computation of exponent conductor takes too long #80

Open swewers opened 6 years ago

swewers commented 6 years ago

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 commented 6 years ago

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 + 2160x^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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

25607 has not been merged yet btw.

saraedum commented 5 years ago

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

JRSijsling commented 5 years ago

Will do!

JRSijsling commented 5 years ago

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

saraedum commented 5 years ago

@JRSijsling actually I meant you ;)

JRSijsling commented 5 years ago

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 commented 5 years ago

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?