fixed tests; changed reduce for forms
This commit is contained in:
parent
b902e3fdca
commit
81b0e4c907
@ -38,7 +38,7 @@ class as_cover:
|
|||||||
for j in range(n):
|
for j in range(n):
|
||||||
####
|
####
|
||||||
#
|
#
|
||||||
power_series = Rzf(cover_template.fcts[j]).subs({zgen[i] : z_series[i] for i in range(j)} | {zgen[i] : 0 for i in range(j, n)} | {fgen[i] : list_of_power_series[i] for i in range(n)})
|
power_series = Rzf(cover_template.fcts[j]).subs({zgen[i] : z_series[i] for i in range(j)} | {zgen[i] : 0 for i in range(j, n)} | {fgen[i] : list_of_power_series[i] for i in range(n)} | {xgen : x_series, ygen:y_series})
|
||||||
####
|
####
|
||||||
jump, correction, t_old, z = artin_schreier_transform(power_series, prec = prec)
|
jump, correction, t_old, z = artin_schreier_transform(power_series, prec = prec)
|
||||||
x_series = x_series(t = t_old)
|
x_series = x_series(t = t_old)
|
||||||
@ -74,7 +74,7 @@ class as_cover:
|
|||||||
self.dx = as_form(self, 1)
|
self.dx = as_form(self, 1)
|
||||||
self.one = as_function(self, 1)
|
self.one = as_function(self, 1)
|
||||||
Rzf, zgen, fgen, xgen, ygen = cover_template.fct_field
|
Rzf, zgen, fgen, xgen, ygen = cover_template.fct_field
|
||||||
subs_fs = {zgen[i] : z[i]}| {fgen[i] : RxyzQ(list_of_fcts[i].function) for i in range(n)}|{xgen:x, ygen:y}
|
subs_fs = {zgen[i] : z[i] for i in range(n)}| {fgen[i] : RxyzQ(list_of_fcts[i].function) for i in range(n)}|{xgen:x, ygen:y}
|
||||||
self.rhs = [RxyzQ(cover_template.fcts[i].subs(subs_fs)) for i in range(n)]
|
self.rhs = [RxyzQ(cover_template.fcts[i].subs(subs_fs)) for i in range(n)]
|
||||||
#####
|
#####
|
||||||
##### We compute now the differentials dz[i]
|
##### We compute now the differentials dz[i]
|
||||||
@ -306,7 +306,7 @@ class as_cover:
|
|||||||
p = self.characteristic
|
p = self.characteristic
|
||||||
n = self.height
|
n = self.height
|
||||||
F = self.base_ring
|
F = self.base_ring
|
||||||
rr_space = self.at_most_poles(threshold, threshold=int(sqrt(threshold))) #there are two thresholds, how to pick them? we picked sqrt randomly
|
rr_space = self.at_most_poles(threshold, threshold=threshold) #there are two thresholds, how to pick them? we picked sqrt randomly
|
||||||
list_of_fcts = [ff for ff in rr_space if ff.valuation(place)%p != 0]
|
list_of_fcts = [ff for ff in rr_space if ff.valuation(place)%p != 0]
|
||||||
list_of_fcts2 = [len(str(ff)) for ff in list_of_fcts]
|
list_of_fcts2 = [len(str(ff)) for ff in list_of_fcts]
|
||||||
i_min = list_of_fcts2.index(min(list_of_fcts2))
|
i_min = list_of_fcts2.index(min(list_of_fcts2))
|
||||||
@ -557,6 +557,7 @@ class as_cover:
|
|||||||
|
|
||||||
def group_action_matrices_dR(AS, basis = 0, threshold=8):
|
def group_action_matrices_dR(AS, basis = 0, threshold=8):
|
||||||
n = AS.height
|
n = AS.height
|
||||||
|
F = AS.base_ring
|
||||||
if basis == 0:
|
if basis == 0:
|
||||||
holo_basis = AS.holomorphic_differentials_basis(threshold = threshold)
|
holo_basis = AS.holomorphic_differentials_basis(threshold = threshold)
|
||||||
str_basis = AS.cohomology_of_structure_sheaf_basis(holo_basis = holo_basis, threshold = threshold)
|
str_basis = AS.cohomology_of_structure_sheaf_basis(holo_basis = holo_basis, threshold = threshold)
|
||||||
|
@ -68,8 +68,9 @@ class as_form:
|
|||||||
|
|
||||||
def reduce(self):
|
def reduce(self):
|
||||||
RxyzQ, Rxyz, x, y, z = self.curve.fct_field
|
RxyzQ, Rxyz, x, y, z = self.curve.fct_field
|
||||||
aux = as_reduction(self.curve, RxyzQ(self.form))
|
m = self.curve.quotient.exponent
|
||||||
return as_form(self.curve, aux)
|
aux = as_reduction(self.curve, RxyzQ(y^m*self.form))
|
||||||
|
return as_form(self.curve, aux/y^m)
|
||||||
|
|
||||||
def group_action(self, elt):
|
def group_action(self, elt):
|
||||||
C = self.curve
|
C = self.curve
|
||||||
@ -81,6 +82,7 @@ class as_form:
|
|||||||
def coordinates(self, basis = 0):
|
def coordinates(self, basis = 0):
|
||||||
"""Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo."""
|
"""Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo."""
|
||||||
self = self.reduce()
|
self = self.reduce()
|
||||||
|
print(self)
|
||||||
C = self.curve
|
C = self.curve
|
||||||
if basis == 0:
|
if basis == 0:
|
||||||
basis = C.holomorphic_differentials_basis()
|
basis = C.holomorphic_differentials_basis()
|
||||||
@ -90,6 +92,7 @@ class as_form:
|
|||||||
denom = LCM([denominator(omega.form) for omega in basis])
|
denom = LCM([denominator(omega.form) for omega in basis])
|
||||||
basis = [denom*omega for omega in basis]
|
basis = [denom*omega for omega in basis]
|
||||||
self_with_no_denominator = denom*self
|
self_with_no_denominator = denom*self
|
||||||
|
print(denom, basis, self_with_no_denominator)
|
||||||
return linear_representation_polynomials(Rxyz(self_with_no_denominator.form), [Rxyz(omega.form) for omega in basis])
|
return linear_representation_polynomials(Rxyz(self_with_no_denominator.form), [Rxyz(omega.form) for omega in basis])
|
||||||
|
|
||||||
def trace(self, super=True):
|
def trace(self, super=True):
|
||||||
|
@ -9,8 +9,8 @@ Rxy.<x, y> = PolynomialRing(GF(p), 2)
|
|||||||
fArS1 = superelliptic_function(C_super, y*x)
|
fArS1 = superelliptic_function(C_super, y*x)
|
||||||
fArS2 = superelliptic_function(C_super, y*x^2)
|
fArS2 = superelliptic_function(C_super, y*x^2)
|
||||||
fArS3 = superelliptic_function(C_super, y + x)
|
fArS3 = superelliptic_function(C_super, y + x)
|
||||||
AS1 = as_cover(C_super, [fArS1, fArS2, fArS3], prec=150)
|
AS1 = elementary_cover([fArS1, fArS2, fArS3], prec=150)
|
||||||
AS2 = as_cover(C_super, [fArS2, fArS3, fArS1], prec=150)
|
AS2 = elementary_cover([fArS2, fArS3, fArS1], prec=150)
|
||||||
print(AS1.genus() == AS2.genus())
|
print(AS1.genus() == AS2.genus())
|
||||||
##################
|
##################
|
||||||
p = 5
|
p = 5
|
||||||
@ -21,6 +21,6 @@ C_super = superelliptic(f, m)
|
|||||||
Rxy.<x, y> = PolynomialRing(GF(p), 2)
|
Rxy.<x, y> = PolynomialRing(GF(p), 2)
|
||||||
fArS1 = superelliptic_function(C_super, y*x)
|
fArS1 = superelliptic_function(C_super, y*x)
|
||||||
fArS2 = superelliptic_function(C_super, y*x^2)
|
fArS2 = superelliptic_function(C_super, y*x^2)
|
||||||
AS1 = as_cover(C_super, [fArS1, fArS2], prec=1000)
|
AS1 = elementary_cover([fArS1, fArS2], prec=1000)
|
||||||
omega = as_form(AS1, 1/y)
|
omega = as_form(AS1, 1/y)
|
||||||
print(omega.expansion_at_infty().valuation()==AS1.exponent_of_different())
|
print(omega.expansion_at_infty().valuation()==AS1.exponent_of_different())
|
@ -7,7 +7,7 @@ C_super = superelliptic(f, m)
|
|||||||
|
|
||||||
f1 = C_super.x^2*C_super.y
|
f1 = C_super.x^2*C_super.y
|
||||||
f2 = C_super.x^3
|
f2 = C_super.x^3
|
||||||
AS = as_cover(C_super, [f1, f2], prec=1000)
|
AS = elementary_cover([f1, f2], prec=1000)
|
||||||
|
|
||||||
A, B = AS.group_action_matrices_holo()
|
A, B = AS.group_action_matrices_holo()
|
||||||
n = A.dimensions()[0]
|
n = A.dimensions()[0]
|
||||||
|
Loading…
Reference in New Issue
Block a user