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