obliczanie dzialania na dR chyba dziala
This commit is contained in:
parent
d77addeaf8
commit
f7a04c69ec
File diff suppressed because it is too large
Load Diff
@ -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,26 +66,29 @@ 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()]
|
||||
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
|
||||
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.')
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user