fixed issue with de Rham basis and coordinates for more than one place at infty (lift_to_de_rham)
This commit is contained in:
parent
3843cfa550
commit
dedec88e64
@ -449,7 +449,7 @@ class as_cover:
|
||||
i += 1
|
||||
return result_fcts
|
||||
|
||||
def lift_to_de_rham(self, fct, threshold = 30):
|
||||
def lift_to_de_rham(self, fct, basis = 0, threshold = 30):
|
||||
'''Given function fct, find form eta regular on affine part such that eta - d(fct) is regular in infty. (Works for one place at infty now)'''
|
||||
from itertools import product
|
||||
x_series = self.x_series
|
||||
@ -469,17 +469,27 @@ class as_cover:
|
||||
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
||||
S = [(fct.diffn(), fct.diffn().expansion_at_infty())]
|
||||
pr = [list(GF(p)) for _ in range(n)]
|
||||
holo = self.holomorphic_differentials_basis(threshold = threshold)
|
||||
if basis == 0:
|
||||
holo = self.holomorphic_differentials_basis(threshold = threshold)
|
||||
else:
|
||||
holo = basis
|
||||
for i in range(0, threshold*r):
|
||||
for j in range(0, m):
|
||||
for k in product(*pr):
|
||||
eta = as_form(self, x^i*prod(z[i1]^(k[i1]) for i1 in range(n))/y^j)
|
||||
eta_exp = eta.expansion_at_infty()
|
||||
S += [(eta, eta_exp)]
|
||||
forms = holomorphic_combinations(S)
|
||||
if len(forms) <= self.genus():
|
||||
S = holomorphic_combinations(S)
|
||||
########
|
||||
for i in range(delta):
|
||||
for g in self.fiber(place = i):
|
||||
if i!=0 or g != self.group.one:
|
||||
S = [(omega, omega.group_action(g).expansion_at_infty(place = i)) for omega in S]
|
||||
S = holomorphic_combinations(S)
|
||||
######
|
||||
if len(S) <= self.genus():
|
||||
raise ValueError("Increase threshold!")
|
||||
for omega in forms:
|
||||
for omega in S:
|
||||
for a in F:
|
||||
if (a*omega + fct.diffn()).is_regular_on_U0():
|
||||
return a*omega + fct.diffn()
|
||||
@ -538,7 +548,7 @@ class as_cover:
|
||||
for omega in holo_basis:
|
||||
result += [as_cech(self, omega, as_function(self, 0))]
|
||||
for f in cohomology_basis:
|
||||
omega = self.lift_to_de_rham(f, threshold = threshold)
|
||||
omega = self.lift_to_de_rham(f, basis = holo_basis, threshold = threshold)
|
||||
result += [as_cech(self, omega, f)]
|
||||
return result
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user