diff --git a/as_covers/as_cover_class.sage b/as_covers/as_cover_class.sage index 6c0870c..9c01d64 100644 --- a/as_covers/as_cover_class.sage +++ b/as_covers/as_cover_class.sage @@ -449,7 +449,7 @@ class as_cover: i += 1 return result_fcts - def lift_to_de_rham(self, fct, threshold = 30): + def lift_to_de_rham(self, fct, basis = 0, 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)''' from itertools import product x_series = self.x_series @@ -469,17 +469,27 @@ class as_cover: #Tworzymy zbiĆ³r S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y S = [(fct.diffn(), fct.diffn().expansion_at_infty())] pr = [list(GF(p)) for _ in range(n)] - holo = self.holomorphic_differentials_basis(threshold = threshold) + if basis == 0: + holo = self.holomorphic_differentials_basis(threshold = threshold) + else: + holo = basis for i in range(0, threshold*r): for j in range(0, m): for k in product(*pr): eta = as_form(self, x^i*prod(z[i1]^(k[i1]) for i1 in range(n))/y^j) eta_exp = eta.expansion_at_infty() S += [(eta, eta_exp)] - forms = holomorphic_combinations(S) - if len(forms) <= self.genus(): + S = holomorphic_combinations(S) + ######## + for i in range(delta): + for g in self.fiber(place = i): + if i!=0 or g != self.group.one: + S = [(omega, omega.group_action(g).expansion_at_infty(place = i)) for omega in S] + S = holomorphic_combinations(S) + ###### + if len(S) <= self.genus(): raise ValueError("Increase threshold!") - for omega in forms: + for omega in S: for a in F: if (a*omega + fct.diffn()).is_regular_on_U0(): return a*omega + fct.diffn() @@ -538,7 +548,7 @@ class as_cover: for omega in holo_basis: result += [as_cech(self, omega, as_function(self, 0))] for f in cohomology_basis: - omega = self.lift_to_de_rham(f, threshold = threshold) + omega = self.lift_to_de_rham(f, basis = holo_basis, threshold = threshold) result += [as_cech(self, omega, f)] return result