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
|
i += 1
|
||||||
return result_fcts
|
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)'''
|
'''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
|
from itertools import product
|
||||||
x_series = self.x_series
|
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
|
#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())]
|
S = [(fct.diffn(), fct.diffn().expansion_at_infty())]
|
||||||
pr = [list(GF(p)) for _ in range(n)]
|
pr = [list(GF(p)) for _ in range(n)]
|
||||||
|
if basis == 0:
|
||||||
holo = self.holomorphic_differentials_basis(threshold = threshold)
|
holo = self.holomorphic_differentials_basis(threshold = threshold)
|
||||||
|
else:
|
||||||
|
holo = basis
|
||||||
for i in range(0, threshold*r):
|
for i in range(0, threshold*r):
|
||||||
for j in range(0, m):
|
for j in range(0, m):
|
||||||
for k in product(*pr):
|
for k in product(*pr):
|
||||||
eta = as_form(self, x^i*prod(z[i1]^(k[i1]) for i1 in range(n))/y^j)
|
eta = as_form(self, x^i*prod(z[i1]^(k[i1]) for i1 in range(n))/y^j)
|
||||||
eta_exp = eta.expansion_at_infty()
|
eta_exp = eta.expansion_at_infty()
|
||||||
S += [(eta, eta_exp)]
|
S += [(eta, eta_exp)]
|
||||||
forms = holomorphic_combinations(S)
|
S = holomorphic_combinations(S)
|
||||||
if len(forms) <= self.genus():
|
########
|
||||||
|
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!")
|
raise ValueError("Increase threshold!")
|
||||||
for omega in forms:
|
for omega in S:
|
||||||
for a in F:
|
for a in F:
|
||||||
if (a*omega + fct.diffn()).is_regular_on_U0():
|
if (a*omega + fct.diffn()).is_regular_on_U0():
|
||||||
return a*omega + fct.diffn()
|
return a*omega + fct.diffn()
|
||||||
@ -538,7 +548,7 @@ class as_cover:
|
|||||||
for omega in holo_basis:
|
for omega in holo_basis:
|
||||||
result += [as_cech(self, omega, as_function(self, 0))]
|
result += [as_cech(self, omega, as_function(self, 0))]
|
||||||
for f in cohomology_basis:
|
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)]
|
result += [as_cech(self, omega, f)]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user