obliczanie dzialania na dR chyba dziala

This commit is contained in:
jgarnek 2022-12-24 10:34:56 +00:00
parent d77addeaf8
commit f7a04c69ec
3 changed files with 7256 additions and 23 deletions

File diff suppressed because it is too large Load Diff

View File

@ -44,6 +44,10 @@ class as_cech:
def coordinates(self, threshold=10, basis = 0):
'''Find coordinates of self in the de Rham cohomology basis. Threshold is an argument passed to AS.de_rham_basis().'''
AS = self.curve
C = AS.quotient
m = C.exponent
r = C.polynomial.degree()
n = AS.height
RxyzQ, Rxyz, x, y, z = AS.fct_field
if basis == 0:
basis = [AS.holomorphic_differentials_basis(), AS.cohomology_of_structure_sheaf_basis(), AS.de_rham_basis(threshold=threshold)]
@ -54,7 +58,6 @@ class as_cech:
f_products = []
for f in coh_basis:
f_products += [[omega.serre_duality_pairing(f) for omega in holo_diffs]]
print(f_products)
product_of_fct_and_omegas = []
fct = self.f
product_of_fct_and_omegas = [omega.serre_duality_pairing(fct) for omega in holo_diffs]
@ -63,27 +66,30 @@ class as_cech:
coh_coordinates = V.coordinates(product_of_fct_and_omegas) #coeficients of self in the basis elts coming from cohomology of OX
for i in range(AS.genus()):
self -= coh_coordinates[i]*dR[i+AS.genus()]
#We remove now from f the summands which are obviously regular at infty
print(self, [])
f_num = numerator(self.f.function)
f_den = denominator(self.f.function)
v_f_den = as_function(AS, f_den).valuation()
for a in f_num.monomials():
if as_function(AS, a).valuation() >= v_f_den:
self.f.function -= f_num.monomial_coefficient(a)*a/f_den
f_num = numerator(self.f.function)
f_den = denominator(self.f.function)
quo, rem = f_num.quo_rem(f_den)
if as_function(AS, rem/f_den).valuation() >= 0:
self.f = as_function(AS, quo)
hol_form = self.omega0 - self.f.diffn() #now this should be a holomorphic form
hol_form = as_form(AS, as_reduction(AS, hol_form.form))
print('hol_form', hol_form)
return hol_form.coordinates() + coh_coordinates
print(self, [omega.serre_duality_pairing(self.f) for omega in holo_diffs])
raise ValueError('I arrived at a form (omega, 0), in which omega is not regular on U0. I hoped this wouldn t happen.')
coh_coordinates = AS.genus()*[0] + list(coh_coordinates)
if self.f.function not in Rxyz:
#We remove now from f the summands which are obviously regular at infty
pr = [list(GF(p)) for _ in range(n)]
S = []
from itertools import product
for i in range(0, threshold*r):
for j in range(0, m):
for k in product(*pr):
g = (AS.x)^i*prod((AS.z[i1])^(k[i1]) for i1 in range(n))*(AS.y)^j
S += [(g, g.expansion_at_infty())]
S += [(self.f, self.f.expansion_at_infty())]
fcts = holomorphic_combinations_fcts(S, 0)
for g in fcts:
if g.function not in Rxyz:
for a in F:
if (self.f.function - a*g.function in Rxyz):
self.f.function = self.f.function - a*g.function
return vector(coh_coordinates)+vector(self.coordinates(threshold=threshold, basis = basis))
else:
self.omega0 -= self.f.diffn()
return vector(coh_coordinates) + vector(list(self.omega0.coordinates())+AS.genus()*[0])
raise ValueError("Increase threshold.")
def group_action(self, g):
AS = self.curve
omega = self.omega0

View File

@ -335,7 +335,6 @@ class as_cover:
def lift_to_de_rham(self, fct, 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)'''
print(fct)
from itertools import product
x_series = self.x_series
y_series = self.y_series