non-totally ramified pts and holo diffs - first try

This commit is contained in:
jgarnek 2024-02-08 20:38:34 +00:00
parent 7598e93642
commit 7bfae60f57
4 changed files with 19 additions and 1 deletions

View File

@ -7,4 +7,6 @@ fct2 = fct1 + (P1.x)/(P1.y - P1.x)
fct3 = (P1.x)^4 fct3 = (P1.x)^4
C = heisenberg_cover(P1, [1/2*fct1, fct2, fct3], prec=300) C = heisenberg_cover(P1, [1/2*fct1, fct2, fct3], prec=300)
print(C) print(C)
a1, b1, c1 = heisenberg_group_action_matrices_holo(C) B = C.holomorphic_differentials_basis()
print("Computed basis")
a1, b1, c1 = heisenberg_group_action_matrices_holo(C, basis = B)

View File

@ -146,7 +146,19 @@ class heisenberg_cover:
if len(forms) < self.genus(): if len(forms) < self.genus():
print("I haven't found all forms, only ", len(forms), " of ", self.genus()) print("I haven't found all forms, only ", len(forms), " of ", self.genus())
return holomorphic_differentials_basis(self, threshold = threshold + 1) return holomorphic_differentials_basis(self, threshold = threshold + 1)
if len(forms) > self.genus(): if len(forms) > self.genus():
forms1 = []
for omega in forms:
flag = 1
for g in self.group:
for i in range(self.nb_of_pts_at_infty):
if omega.group_action(g).valuation(i) < 0:
flag = 0
if flag == 1:
forms1 += [omega]
if len(forms1) == self.genus():
return forms1
raise ValueError("Increase precision.") raise ValueError("Increase precision.")
return forms return forms

View File

@ -84,6 +84,8 @@ class heisenberg_form:
def group_action(self, elt): def group_action(self, elt):
AS = self.curve AS = self.curve
RxyzQ, Rxyz, x, y, z = AS.fct_field RxyzQ, Rxyz, x, y, z = AS.fct_field
if elt == (0, 0, 0):
return self
if elt == (1, 0, 0): if elt == (1, 0, 0):
sub_list = {x : x, y : y} | {z[0] : z[0] + 1, z[1] : z[1], z[2]: z[2] + z[1]} sub_list = {x : x, y : y} | {z[0] : z[0] + 1, z[1] : z[1], z[2]: z[2] + z[1]}
g = self.form g = self.form

View File

@ -120,6 +120,8 @@ class heisenberg_function:
def group_action(self, elt): def group_action(self, elt):
AS = self.curve AS = self.curve
RxyzQ, Rxyz, x, y, z = AS.fct_field RxyzQ, Rxyz, x, y, z = AS.fct_field
if elt == (0, 0, 0):
return self
if elt == (1, 0, 0): if elt == (1, 0, 0):
sub_list = {x : x, y : y} | {z[0] : z[0] + 1, z[1] : z[1], z[2]: z[2] + z[1]} sub_list = {x : x, y : y} | {z[0] : z[0] + 1, z[1] : z[1], z[2]: z[2] + z[1]}
g = self.function g = self.function