diff --git a/drafty/draft2.sage b/drafty/draft2.sage index a1e0de9..3d562a4 100644 --- a/drafty/draft2.sage +++ b/drafty/draft2.sage @@ -7,4 +7,6 @@ fct2 = fct1 + (P1.x)/(P1.y - P1.x) fct3 = (P1.x)^4 C = heisenberg_cover(P1, [1/2*fct1, fct2, fct3], prec=300) print(C) -a1, b1, c1 = heisenberg_group_action_matrices_holo(C) \ No newline at end of file +B = C.holomorphic_differentials_basis() +print("Computed basis") +a1, b1, c1 = heisenberg_group_action_matrices_holo(C, basis = B) \ No newline at end of file diff --git a/heisenberg_covers/heisenberg_covers.sage b/heisenberg_covers/heisenberg_covers.sage index 78718d6..43b6385 100644 --- a/heisenberg_covers/heisenberg_covers.sage +++ b/heisenberg_covers/heisenberg_covers.sage @@ -146,7 +146,19 @@ class heisenberg_cover: if len(forms) < self.genus(): print("I haven't found all forms, only ", len(forms), " of ", self.genus()) return holomorphic_differentials_basis(self, threshold = threshold + 1) + 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.") return forms diff --git a/heisenberg_covers/heisenberg_form_class.sage b/heisenberg_covers/heisenberg_form_class.sage index f4737f6..9d2bb12 100644 --- a/heisenberg_covers/heisenberg_form_class.sage +++ b/heisenberg_covers/heisenberg_form_class.sage @@ -84,6 +84,8 @@ class heisenberg_form: def group_action(self, elt): AS = self.curve RxyzQ, Rxyz, x, y, z = AS.fct_field + if elt == (0, 0, 0): + return self 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]} g = self.form diff --git a/heisenberg_covers/heisenberg_function_class.sage b/heisenberg_covers/heisenberg_function_class.sage index a802c91..f20a520 100644 --- a/heisenberg_covers/heisenberg_function_class.sage +++ b/heisenberg_covers/heisenberg_function_class.sage @@ -120,6 +120,8 @@ class heisenberg_function: def group_action(self, elt): AS = self.curve RxyzQ, Rxyz, x, y, z = AS.fct_field + if elt == (0, 0, 0): + return self 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]} g = self.function