fixed tests; changed reduce for forms

This commit is contained in:
Jędrzej Garnek 2024-12-20 12:12:21 +01:00
parent b902e3fdca
commit 81b0e4c907
4 changed files with 13 additions and 9 deletions

View File

@ -38,7 +38,7 @@ class as_cover:
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)
x_series = x_series(t = t_old)
@ -74,7 +74,7 @@ class as_cover:
self.dx = as_form(self, 1)
self.one = as_function(self, 1)
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)]
#####
##### We compute now the differentials dz[i]
@ -306,7 +306,7 @@ class as_cover:
p = self.characteristic
n = self.height
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_fcts2 = [len(str(ff)) for ff in list_of_fcts]
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):
n = AS.height
F = AS.base_ring
if basis == 0:
holo_basis = AS.holomorphic_differentials_basis(threshold = threshold)
str_basis = AS.cohomology_of_structure_sheaf_basis(holo_basis = holo_basis, threshold = threshold)

View File

@ -68,8 +68,9 @@ class as_form:
def reduce(self):
RxyzQ, Rxyz, x, y, z = self.curve.fct_field
aux = as_reduction(self.curve, RxyzQ(self.form))
return as_form(self.curve, aux)
m = self.curve.quotient.exponent
aux = as_reduction(self.curve, RxyzQ(y^m*self.form))
return as_form(self.curve, aux/y^m)
def group_action(self, elt):
C = self.curve
@ -81,6 +82,7 @@ class as_form:
def coordinates(self, basis = 0):
"""Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo."""
self = self.reduce()
print(self)
C = self.curve
if basis == 0:
basis = C.holomorphic_differentials_basis()
@ -90,6 +92,7 @@ class as_form:
denom = LCM([denominator(omega.form) for omega in basis])
basis = [denom*omega for omega in basis]
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])
def trace(self, super=True):

View File

@ -9,8 +9,8 @@ Rxy.<x, y> = PolynomialRing(GF(p), 2)
fArS1 = superelliptic_function(C_super, y*x)
fArS2 = superelliptic_function(C_super, y*x^2)
fArS3 = superelliptic_function(C_super, y + x)
AS1 = as_cover(C_super, [fArS1, fArS2, fArS3], prec=150)
AS2 = as_cover(C_super, [fArS2, fArS3, fArS1], prec=150)
AS1 = elementary_cover([fArS1, fArS2, fArS3], prec=150)
AS2 = elementary_cover([fArS2, fArS3, fArS1], prec=150)
print(AS1.genus() == AS2.genus())
##################
p = 5
@ -21,6 +21,6 @@ C_super = superelliptic(f, m)
Rxy.<x, y> = PolynomialRing(GF(p), 2)
fArS1 = superelliptic_function(C_super, y*x)
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)
print(omega.expansion_at_infty().valuation()==AS1.exponent_of_different())

View File

@ -7,7 +7,7 @@ C_super = superelliptic(f, m)
f1 = C_super.x^2*C_super.y
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()
n = A.dimensions()[0]