cohomology of structure sheaf
This commit is contained in:
parent
6edd5f9c40
commit
c28c4a4fa4
File diff suppressed because it is too large
Load Diff
40028
sage/.run.term-0.term
40028
sage/.run.term-0.term
File diff suppressed because one or more lines are too long
@ -17,40 +17,3 @@ def magmathis(A, B, text = False):
|
||||
if text:
|
||||
return result
|
||||
print(magma_free(result))
|
||||
|
||||
|
||||
def as_reduction(AS, fct):
|
||||
n = AS.height
|
||||
F = AS.base_ring
|
||||
variable_names = 'x, y'
|
||||
for i in range(n):
|
||||
variable_names += ', z' + str(i)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
RxyzQ = FractionField(Rxyz)
|
||||
ff = AS.functions
|
||||
ff = [RxyzQ(F.function) for F in ff]
|
||||
fct = RxyzQ(fct)
|
||||
fct1 = numerator(fct)
|
||||
fct2 = denominator(fct)
|
||||
if fct2 != 1:
|
||||
return as_reduction(AS, fct1)/as_reduction(AS, fct2)
|
||||
|
||||
result = RxyzQ(0)
|
||||
change = 0
|
||||
for a in fct1.monomials():
|
||||
degrees_zi = [a.degree(z[i]) for i in range(n)]
|
||||
d_div = [a.degree(z[i])//p for i in range(n)]
|
||||
if d_div != n*[0]:
|
||||
change = 1
|
||||
d_rem = [a.degree(z[i])%p for i in range(n)]
|
||||
monomial = fct1.coefficient(a)*x^(a.degree(x))*y^(a.degree(y))*prod(z[i]^(d_rem[i]) for i in range(n))*prod((z[i] + ff[i])^(d_div[i]) for i in range(n))
|
||||
result += RxyzQ(fct1.coefficient(a)*x^(a.degree(x))*y^(a.degree(y))*prod(z[i]^(d_rem[i]) for i in range(n))*prod((z[i] + ff[i])^(d_div[i]) for i in range(n)))
|
||||
|
||||
|
||||
if change == 0:
|
||||
return RxyzQ(result)
|
||||
else:
|
||||
print(fct, '\n')
|
||||
return as_reduction(AS, RxyzQ(result))
|
@ -58,6 +58,16 @@ class as_cover:
|
||||
self.y = all_y_series
|
||||
self.z = all_z_series
|
||||
self.dx = all_dx_series
|
||||
##############
|
||||
#Function field
|
||||
variable_names = 'x, y'
|
||||
for i in range(n):
|
||||
variable_names += ', z' + str(i)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
RxyzQ = FractionField(Rxyz)
|
||||
self.fct_field = (RxyzQ, Rxyz, x, y, z)
|
||||
|
||||
def __repr__(self):
|
||||
n = self.height
|
||||
@ -106,17 +116,10 @@ class as_cover:
|
||||
F = self.base_ring
|
||||
m = C.exponent
|
||||
r = C.polynomial.degree()
|
||||
variable_names = 'x, y'
|
||||
for i in range(n):
|
||||
variable_names += ', z' + str(i)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
RxyzQ = FractionField(Rxyz)
|
||||
RxyzQ, Rxyz, x, y, z = self.fct_field
|
||||
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
||||
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
||||
S = []
|
||||
RQxyz = FractionField(Rxyz)
|
||||
pr = [list(GF(p)) for _ in range(n)]
|
||||
for i in range(0, threshold*r):
|
||||
for j in range(0, m):
|
||||
@ -153,13 +156,7 @@ class as_cover:
|
||||
F = self.base_ring
|
||||
m = C.exponent
|
||||
r = C.polynomial.degree()
|
||||
variable_names = 'x, y'
|
||||
for i in range(n):
|
||||
variable_names += ', z' + str(i)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
RxyzQ = FractionField(Rxyz)
|
||||
RxyzQ, Rxyz, x, y, z = self.fct_field
|
||||
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
||||
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
||||
S = []
|
||||
@ -211,13 +208,7 @@ class as_cover:
|
||||
F = self.base_ring
|
||||
m = C.exponent
|
||||
r = C.polynomial.degree()
|
||||
variable_names = 'x, y'
|
||||
for i in range(n):
|
||||
variable_names += ', z' + str(i)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
RxyzQ = FractionField(Rxyz)
|
||||
RxyzQ, Rxyz, x, y, z = self.fct_field
|
||||
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
||||
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
||||
S = []
|
||||
@ -242,12 +233,8 @@ class as_cover:
|
||||
'''Return uniformizer of curve self at i-th place at infinity.'''
|
||||
p = self.characteristic
|
||||
n = self.height
|
||||
variable_names = 'x, y'
|
||||
for j in range(n):
|
||||
variable_names += ', z' + str(j)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
F = self.base_ring
|
||||
RxyzQ, Rxyz, x, y, z = self.fct_field
|
||||
fx = as_function(self, x)
|
||||
z = [as_function(self, zi) for zi in z]
|
||||
# We create a list of functions. We add there all variables...
|
||||
@ -262,14 +249,14 @@ class as_cover:
|
||||
a = gcd(vz[j1] , vz[j2])
|
||||
vz1 = vz[j1]/a
|
||||
vz2 = vz[j2]/a
|
||||
for b in GF(p):
|
||||
for b in F:
|
||||
if (z[j1]^(vz2) - b*z[j2]^(vz1)).valuation(i) > (z[j2]^(vz1)).valuation(i):
|
||||
list_of_fcts += [z[j1]^(vz2) - b*z[j2]^(vz1)]
|
||||
for j1 in range(n):
|
||||
a = gcd(vz[j1], vfx)
|
||||
vzj = vz[j1] /a
|
||||
vfx = vfx/a
|
||||
for b in GF(p):
|
||||
for b in F:
|
||||
if (fx^(vzj) - b*z[j1]^(vfx)).valuation(i) > (z[j1]^(vfx)).valuation(i):
|
||||
list_of_fcts += [fx^(vzj) - b*z[j1]^(vfx)]
|
||||
#Finally, we check if on the list there are two elements with the same valuation.
|
||||
@ -306,7 +293,43 @@ class as_cover:
|
||||
G = Gi
|
||||
i+=1
|
||||
return ramification_jps
|
||||
|
||||
|
||||
def cohomology_of_structure_sheaf_basis(self, threshold = 8):
|
||||
holo_diffs = self.holomorphic_differentials_basis(threshold = threshold)
|
||||
from itertools import product
|
||||
x_series = self.x
|
||||
y_series = self.y
|
||||
z_series = self.z
|
||||
delta = self.nb_of_pts_at_infty
|
||||
p = self.characteristic
|
||||
n = self.height
|
||||
prec = self.prec
|
||||
C = self.quotient
|
||||
F = self.base_ring
|
||||
m = C.exponent
|
||||
r = C.polynomial.degree()
|
||||
RxyzQ, Rxyz, x, y, z = self.fct_field
|
||||
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
||||
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
||||
result_fcts = []
|
||||
V = VectorSpace(F,self.genus())
|
||||
S = V.subspace([])
|
||||
RQxyz = FractionField(Rxyz)
|
||||
pr = [list(GF(p)) for _ in range(n)]
|
||||
i = 0
|
||||
while len(result_fcts) < self.genus():
|
||||
for j in range(0, m):
|
||||
for k in product(*pr):
|
||||
f = as_function(self, prod(z[i1]^(k[i1]) for i1 in range(n))/x^i*y^j)
|
||||
f_products = []
|
||||
for omega in holo_diffs:
|
||||
f_products += [sum((f*omega).residue(place = _) for _ in range(self.nb_of_pts_at_infty))]
|
||||
if vector(f_products) not in S:
|
||||
S = S+V.subspace([V(f_products)])
|
||||
result_fcts += [f]
|
||||
i += 1
|
||||
return result_fcts
|
||||
|
||||
def holomorphic_combinations(S):
|
||||
"""Given a list S of pairs (form, corresponding Laurent series at some pt), find their combinations holomorphic at that pt."""
|
||||
C_AS = S[0][0].curve
|
||||
|
@ -85,31 +85,6 @@ class as_form:
|
||||
return linear_representation(Rxyz(self.form), holo)
|
||||
|
||||
def trace(self):
|
||||
C = self.curve
|
||||
C_super = C.quotient
|
||||
n = C.height
|
||||
F = C.base_ring
|
||||
variable_names = 'x, y'
|
||||
for j in range(n):
|
||||
variable_names += ', z' + str(j)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
RxyzQ = FractionField(Rxyz)
|
||||
g = self.form
|
||||
result = RxyzQ(0)
|
||||
g_num = Rxyz(numerator(g))
|
||||
g_den = Rxyz(denominator(g))
|
||||
z = prod(z[i] for i in range(n))^(p-1)
|
||||
for a in g_num.monomials():
|
||||
if (z.divides(a)):
|
||||
result += g_num.monomial_coefficient(a)*a/z
|
||||
result /= g_den
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
return superelliptic_form(C_super, Rxy(result))
|
||||
|
||||
|
||||
def trace2(self):
|
||||
C = self.curve
|
||||
C_super = C.quotient
|
||||
n = C.height
|
||||
@ -128,9 +103,11 @@ class as_form:
|
||||
result = result.form
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
Qxy = FractionField(Rxy)
|
||||
result = as_reduction(AS, result)
|
||||
return superelliptic_form(C_super, Qxy(result))
|
||||
|
||||
|
||||
def residue(self, place=0):
|
||||
return self.expansion_at_infty(i = place).residue()
|
||||
|
||||
def artin_schreier_transform(power_series, prec = 10):
|
||||
"""Given a power_series, find correction such that power_series - (correction)^p +correction has valuation
|
||||
|
@ -34,10 +34,16 @@ class as_function:
|
||||
return as_function(C, constant*g)
|
||||
|
||||
def __mul__(self, other):
|
||||
C = self.curve
|
||||
g1 = self.function
|
||||
g2 = other.function
|
||||
return as_function(C, g1*g2)
|
||||
if isinstance(other, as_function):
|
||||
C = self.curve
|
||||
g1 = self.function
|
||||
g2 = other.function
|
||||
return as_function(C, g1*g2)
|
||||
if isinstance(other, as_form):
|
||||
C = self.curve
|
||||
g1 = self.function
|
||||
g2 = other.form
|
||||
return as_form(C, g1*g2)
|
||||
|
||||
def __truediv__(self, other):
|
||||
C = self.curve
|
||||
@ -88,33 +94,6 @@ class as_function:
|
||||
return as_function(C, g.substitute(sub_list))
|
||||
|
||||
def trace(self):
|
||||
C = self.curve
|
||||
C_super = C.quotient
|
||||
n = C.height
|
||||
F = C.base_ring
|
||||
variable_names = 'x, y'
|
||||
for j in range(n):
|
||||
variable_names += ', z' + str(j)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
RxyzQ = FractionField(Rxyz)
|
||||
g = self.function
|
||||
g = as_reduction(C, g)
|
||||
result = RxyzQ(0)
|
||||
g_num = Rxyz(numerator(g))
|
||||
g_den = Rxyz(denominator(g))
|
||||
z = prod(z[i] for i in range(n))^(p-1)
|
||||
for a in g_num.monomials():
|
||||
if (z.divides(a)):
|
||||
result += g_num.monomial_coefficient(a)*a/z
|
||||
result /= g_den
|
||||
result = as_reduction(C, result)
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
Qxy = FractionField(Rxy)
|
||||
return superelliptic_function(C_super, Qxy(result))
|
||||
|
||||
def trace2(self):
|
||||
C = self.curve
|
||||
C_super = C.quotient
|
||||
n = C.height
|
||||
@ -133,9 +112,32 @@ class as_function:
|
||||
result = result.function
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
Qxy = FractionField(Rxy)
|
||||
result = as_reduction(AS, result)
|
||||
return superelliptic_function(C_super, Qxy(result))
|
||||
|
||||
|
||||
def diffn(self):
|
||||
C = self.curve
|
||||
C_super = C.quotient
|
||||
n = C.height
|
||||
RxyzQ, Rxyz, x, y, z = C.fct_field
|
||||
fcts = C.functions
|
||||
f = self.function
|
||||
y_super = superelliptic_function(C_super, y)
|
||||
dy_super = y_super.diffn().form
|
||||
dz = []
|
||||
for i in range(n):
|
||||
dfct = fcts[i].diffn().form
|
||||
dz += [-dfct]
|
||||
result = f.derivative(x)
|
||||
result += f.derivative(y)*dy_super
|
||||
for i in range(n):
|
||||
result += f.derivative(z[i])*dz[i]
|
||||
return as_form(C, result)
|
||||
|
||||
def valuation(self, i = 0):
|
||||
'''Return valuation at i-th place at infinity.'''
|
||||
return self.expansion_at_infty(i).valuation()
|
||||
C = self.curve
|
||||
F = C.base_ring
|
||||
Rt.<t> = LaurentSeriesRing(F)
|
||||
return Rt(self.expansion_at_infty(i)).valuation()
|
||||
|
@ -6,9 +6,9 @@ def combination_components(omega, zmag, w):
|
||||
group_elts = [(j1, j2) for j1 in range(p) for j2 in range(p)]
|
||||
zvee = dual_elt(AS, zmag)
|
||||
result = as_form(AS, 0)
|
||||
for i in range(p^2):
|
||||
omegai = ith_magical_component(omega, zvee, i)
|
||||
aux_fct1 = w.group_action(group_elts[i]).function
|
||||
aux_fct2 = omegai.form
|
||||
for g in AS.group:
|
||||
omegag = ith_magical_component(omega, zvee, g)
|
||||
aux_fct1 = w.group_action(g).function
|
||||
aux_fct2 = omegag.form
|
||||
result += as_form(AS, aux_fct1*aux_fct2)
|
||||
return result
|
@ -13,12 +13,14 @@ def dual_elt(AS, zmag):
|
||||
M = matrix(RxyzQ, p^n, p^n)
|
||||
for i in range(p^n):
|
||||
for j in range(p^n):
|
||||
M[i, j] = (zmag.group_action(G[i])*zmag.group_action(G[j])).trace2()
|
||||
elt = (zmag.group_action(G[i])*zmag.group_action(G[j])).trace().function
|
||||
elt = Rxyz(elt.numerator())/Rxyz(elt.denominator())
|
||||
M[i, j] = RxyzQ(elt)
|
||||
main_det = M.determinant()
|
||||
zvee = as_function(AS, 0)
|
||||
for i in range(p^n):
|
||||
Mprim = matrix(RxyzQ, M)
|
||||
Mprim[:, i] = vector([(j == 0) for j in range(p^n)])
|
||||
fi = Mprim.determinant()/main_det
|
||||
zvee += fi*zmag.group_action(G[i])
|
||||
zvee += as_function(AS, fi*(zmag.group_action(G[i]).function))
|
||||
return zvee
|
@ -1,8 +1,6 @@
|
||||
def ith_magical_component(omega, zvee, g):
|
||||
'''Given a form omega on AS cover, element g of group AS.group and normal basis element zmag, find the decomposition
|
||||
sum_g g(zmag) omega_g and return omega_g.'''
|
||||
AS = omega.curve
|
||||
p = AS.characteristic
|
||||
z_vee_fct = zvee.group_action(g).function
|
||||
new_form = as_form(AS, z_vee_fct*omega.form)
|
||||
return new_form.trace2()
|
||||
z_vee_g = zvee.group_action(g)
|
||||
new_form = z_vee_g*omega
|
||||
return new_form.trace()
|
15
sage/as_covers/tests/diffn_test.sage
Normal file
15
sage/as_covers/tests/diffn_test.sage
Normal file
@ -0,0 +1,15 @@
|
||||
p = 3
|
||||
m = 1
|
||||
F = GF(p)
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
f = x^2 + 1
|
||||
C_super = superelliptic(f, m)
|
||||
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
f1 = superelliptic_function(C_super, x^2)
|
||||
f2 = superelliptic_function(C_super, x^4)
|
||||
AS = as_cover(C_super, [f1, f2], prec=1000)
|
||||
RxyzQ, Rxyz, x, y, z = AS.fct_field
|
||||
f_z = as_function(AS, z[0]*z[1]*y)
|
||||
df_z = f_z.diffn()
|
||||
print(df_z.form == -z[0]*z[1]*x + y*z[1]*x - y*z[0]*x^3)
|
@ -15,6 +15,6 @@ zdual = dual_elt(AS, zmag)
|
||||
for i in range(p):
|
||||
for j in range(p):
|
||||
if (i, j) == (0, 0):
|
||||
print((zmag*(zdual.group_action([i, j]))).trace2().function == 1)
|
||||
print((zmag*(zdual.group_action([i, j]))).trace().function == 1)
|
||||
else:
|
||||
print((zmag*(zdual.group_action([i, j]))).trace2().function == 0)
|
||||
print((zmag*(zdual.group_action([i, j]))).trace().function == 0)
|
@ -1,4 +1,4 @@
|
||||
p = 3
|
||||
p = 5
|
||||
m = 1
|
||||
F = GF(p)
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
@ -6,51 +6,14 @@ f = x
|
||||
C_super = superelliptic(f, m)
|
||||
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
f1 = superelliptic_function(C_super, x^2)
|
||||
f2 = superelliptic_function(C_super, x^4)
|
||||
f3 = superelliptic_function(C_super, x^5)
|
||||
AS = as_cover(C_super, [f1, f2, f3], prec=1000)
|
||||
print(AS)
|
||||
zmag = AS.magical_element(threshold = 20)[0]
|
||||
zvee = dual_elt(AS, zmag)
|
||||
|
||||
### DEFINE THE POLYNOMIALS
|
||||
n = AS.height
|
||||
variable_names = 'x, y'
|
||||
for i in range(n):
|
||||
variable_names += ', z' + str(i)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
|
||||
###############
|
||||
def val_of_components(omega, zvee):
|
||||
result = []
|
||||
AS = omega.curve
|
||||
for i in range(p^2):
|
||||
omega_i = ith_magical_component(omega, zvee, i)
|
||||
val = omega_i.expansion_at_infty().valuation()
|
||||
val = val*p^2 + AS.exponent_of_different()
|
||||
result += [val]
|
||||
return result
|
||||
#############
|
||||
G = AS.group
|
||||
|
||||
g = AS.genus()
|
||||
print(AS.exponent_of_different_prim())
|
||||
v_x = as_function(AS, x).expansion_at_infty().valuation()
|
||||
n = AS.height
|
||||
v_z = [as_function(AS, z[i]).expansion_at_infty().valuation() for i in range(n)]
|
||||
omega = AS.holomorphic_differentials_basis()[-16]
|
||||
from itertools import product
|
||||
pr = [list(range(p)) for _ in range(n)]
|
||||
for i in range(0, 30):
|
||||
for k in product(*pr):
|
||||
v_w = i*v_x+ sum(k[i]*v_z[i] for i in range(n))
|
||||
if (v_w < - AS.exponent_of_different_prim() + 10 and v_w > - AS.exponent_of_different_prim()):
|
||||
w = as_function(AS, x^i * prod(z[i1]^(k[i1]) for i1 in range(n)))
|
||||
result = as_form(AS, 0)
|
||||
for g in G:
|
||||
component = ith_magical_component(omega, zvee, g).form
|
||||
result += as_form(AS, w.group_action(g).function*component)
|
||||
print(result.expansion_at_infty().valuation(), w.expansion_at_infty().valuation() - zmag.expansion_at_infty().valuation())
|
||||
for a in range(3, 13):
|
||||
for b in range(3, 13):
|
||||
if a %p != 0 and b%p != 0 and a !=b:
|
||||
try:
|
||||
f1 = superelliptic_function(C_super, x^a+x)
|
||||
f2 = superelliptic_function(C_super, x^b)
|
||||
AS = as_cover(C_super, [f1, f2], prec=1000)
|
||||
#print(AS.at_most_poles(AS.exponent_of_different_prim()))
|
||||
print(AS.magical_element(threshold = 20))
|
||||
except:
|
||||
pass
|
@ -1,43 +1,14 @@
|
||||
p = 3
|
||||
m = 1
|
||||
F = GF(p)
|
||||
F = GF(p^2, 'a')
|
||||
a = F.gens()[0]
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
f = x
|
||||
C_super = superelliptic(f, m)
|
||||
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
f1 = superelliptic_function(C_super, x^7)
|
||||
f2 = superelliptic_function(C_super, x^4)
|
||||
f2 = superelliptic_function(C_super, a*x^7)
|
||||
AS = as_cover(C_super, [f1, f2], prec=1000)
|
||||
print(AS.uniformizer())
|
||||
|
||||
def rep_jumps(AS, threshold = 30):
|
||||
ile = 1
|
||||
i = 1
|
||||
result = []
|
||||
flag = 0
|
||||
while(flag == 0):
|
||||
if len(AS.at_most_poles(i, threshold = threshold)) > ile:
|
||||
ile = len(AS.at_most_poles(i, threshold = threshold))
|
||||
result += [i]
|
||||
if i%p != 0:
|
||||
flag = 1
|
||||
i+=1
|
||||
return result
|
||||
|
||||
#print(rep_jumps(AS, threshold = 30))
|
||||
|
||||
def uniformizer(AS, threshold = 30):
|
||||
p = AS.characteristic
|
||||
n = AS.height
|
||||
variable_names = 'x, y'
|
||||
for i in range(n):
|
||||
variable_names += ', z' + str(i)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
zmag = AS.magical_element()[0]
|
||||
v_x = as_function(AS, x).expansion_at_infty().valuation()
|
||||
dprim = AS.exponent_of_different_prim()
|
||||
d, a, b = xgcd(v_x, -dprim)
|
||||
return as_function(AS, x^a*zmag.function^b)
|
||||
#print(AS.uniformizer())
|
||||
print(AS.ramification_jumps())
|
||||
|
@ -1,7 +1,23 @@
|
||||
Rx.<x> = PolynomialRing(GF(5))
|
||||
C = superelliptic(x^3 + 1, 2)
|
||||
Rxy.<x, y> = PolynomialRing(GF(5), 2)
|
||||
f1 = superelliptic_function(C, x*y)
|
||||
CAS = as_cover(C, [f1])
|
||||
g = CAS.uniformizer()
|
||||
AA = g
|
||||
p = 3
|
||||
m = 1
|
||||
F = GF(p)
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
f = x
|
||||
C_super = superelliptic(f, m)
|
||||
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
f1 = superelliptic_function(C_super, x^7)
|
||||
f2 = superelliptic_function(C_super, x^4)
|
||||
AS = as_cover(C_super, [f1, f2], prec=1000)
|
||||
AS1 = as_cover(C_super, [f1], prec=1000)
|
||||
#print(AS.ramification_jumps())
|
||||
#print(pole_numbers(AS))
|
||||
RxyzQ, Rxyz, x, y, z = AS.fct_field
|
||||
zmag = (AS.magical_element())[0]
|
||||
zvee = dual_elt(AS, zmag)
|
||||
t = AS.uniformizer()
|
||||
omega1 = AS1.holomorphic_differentials_basis()[4]
|
||||
omega2 = as_form(AS, t.function*RxyzQ(omega1.form))
|
||||
|
||||
for g in AS.group:
|
||||
print(ith_magical_component(omega2, zvee, g).expansion_at_infty().valuation(), AS.jumps[0][1])
|
@ -5,6 +5,7 @@ load('superelliptic/superelliptic_cech_class.sage')
|
||||
load('as_covers/as_cover_class.sage')
|
||||
load('as_covers/as_function_class.sage')
|
||||
load('as_covers/as_form_class.sage')
|
||||
load('as_covers/as_reduction.sage')
|
||||
load('as_covers/as_auxilliary.sage')
|
||||
load('as_covers/dual_element.sage')
|
||||
load('as_covers/ith_magical_component.sage')
|
||||
@ -14,5 +15,6 @@ load('auxilliaries/reverse.sage')
|
||||
load('auxilliaries/hensel.sage')
|
||||
##############
|
||||
##############
|
||||
load('drafty/draft2.sage')
|
||||
#load('drafty/draft3.sage')
|
||||
load('drafty/draft.sage')
|
||||
load('drafty/pole_numbers.sage')
|
||||
#load('drafty/draft4.sage')
|
@ -4,11 +4,13 @@
|
||||
#load('as_covers/tests/group_action_matrices_test.sage')
|
||||
#print("dual_element_test:")
|
||||
#load('as_covers/tests/dual_element_test.sage')
|
||||
#print("ith_component_test:")
|
||||
#load('as_covers/tests/ith_component_test.sage')
|
||||
print("ith_component_test:")
|
||||
load('as_covers/tests/ith_component_test.sage')
|
||||
#print("ith ramification group test:")
|
||||
#load('as_covers/tests/ith_ramification_gp_test.sage')
|
||||
#print("uniformizer test:")
|
||||
#load('as_covers/tests/uniformizer_test.sage')
|
||||
print("ramification jumps test:")
|
||||
load('as_covers/tests/ramification_jumps_test.sage')
|
||||
#print("ramification jumps test:")
|
||||
#load('as_covers/tests/ramification_jumps_test.sage')
|
||||
print("diffn_test:")
|
||||
load('as_covers/tests/diffn_test.sage')
|
@ -726,9 +726,6 @@
|
||||
"outputs": [
|
||||
],
|
||||
"source": [
|
||||
"Rx.<x> = PolynomialRing(GF(5))\n",
|
||||
"f = x^7 + x + 1\n",
|
||||
"C = superelliptic(f, 2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -740,7 +737,6 @@
|
||||
"outputs": [
|
||||
],
|
||||
"source": [
|
||||
"omega = C.de_rham_basis()[3]"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user