holo basis as an argument for computation of dr basis

This commit is contained in:
jgarnek 2024-01-03 17:26:21 +00:00
parent 49cc75320d
commit d480dda08b
2 changed files with 15 additions and 7 deletions

View File

@ -314,8 +314,9 @@ class as_cover:
g = self.genus() g = self.genus()
return g - self.cartier_matrix().rank() return g - self.cartier_matrix().rank()
def cohomology_of_structure_sheaf_basis(self, threshold = 8): def cohomology_of_structure_sheaf_basis(self, holo_basis = 0, threshold = 8):
holo_diffs = self.holomorphic_differentials_basis(threshold = threshold) if holo_basis == 0:
holo_basis = self.holomorphic_differentials_basis(threshold = threshold)
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
@ -341,7 +342,7 @@ class as_cover:
for j in range(0, m): for j in range(0, m):
for k in product(*pr): for k in product(*pr):
f = as_function(self, prod(z[i1]^(k[i1]) for i1 in range(n))/x^i*y^j) f = as_function(self, prod(z[i1]^(k[i1]) for i1 in range(n))/x^i*y^j)
f_products = [omega.serre_duality_pairing(f) for omega in holo_diffs] f_products = [omega.serre_duality_pairing(f) for omega in holo_basis]
if vector(f_products) not in S: if vector(f_products) not in S:
S = S+V.subspace([V(f_products)]) S = S+V.subspace([V(f_products)])
result_fcts += [f] result_fcts += [f]
@ -384,11 +385,15 @@ class as_cover:
return a*omega + fct.diffn() return a*omega + fct.diffn()
raise ValueError("Unknown.") raise ValueError("Unknown.")
def de_rham_basis(self, threshold = 30): def de_rham_basis(self, holo_basis = 0, cohomology_basis = 0, threshold = 30):
if holo_basis == 0:
holo_basis = self.holomorphic_differentials_basis(threshold = threshold)
if cohomology_basis == 0:
cohomology_basis = self.cohomology_of_structure_sheaf_basis(holo_basis = holo_basis, threshold = threshold)
result = [] result = []
for omega in self.holomorphic_differentials_basis(threshold = threshold): 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 self.cohomology_of_structure_sheaf_basis(threshold = threshold): for f in cohomology_basis:
omega = self.lift_to_de_rham(f, threshold = threshold) omega = self.lift_to_de_rham(f, threshold = threshold)
result += [as_cech(self, omega, f)] result += [as_cech(self, omega, f)]
return result return result

View File

@ -27,7 +27,10 @@ def group_action_matrices_dR(AS, threshold=8):
ei = n*[0] ei = n*[0]
ei[i] = 1 ei[i] = 1
generators += [ei] generators += [ei]
basis = [AS.holomorphic_differentials_basis(threshold = threshold), AS.cohomology_of_structure_sheaf_basis(threshold = threshold), AS.de_rham_basis(threshold=threshold)] holo_basis = AS.holomorphic_differentials_basis(threshold = threshold)
str_basis = AS.cohomology_of_structure_sheaf_basis(holo_basis = holo_basis, threshold = threshold)
dr_basis = AS.de_rham_basis(holo_basis = holo_basis, cohomology_basis = str_basis, threshold=threshold)
basis = [holo_basis, str_basis, dr_basis]
return group_action_matrices(basis[2], generators, basis = basis) return group_action_matrices(basis[2], generators, basis = basis)
def group_action_matrices_old(C_AS): def group_action_matrices_old(C_AS):