From fb6e5e0f8eb3a22af70a615ef72099cb9b863a81 Mon Sep 17 00:00:00 2001 From: jgarnek Date: Wed, 10 Jan 2024 17:05:29 +0000 Subject: [PATCH] de rham for AS working --- as_covers/as_cech_class.sage | 1 + as_covers/as_cover_class.sage | 4 ++-- as_covers/as_form_class.sage | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/as_covers/as_cech_class.sage b/as_covers/as_cech_class.sage index ee12e83..8cd3b6a 100644 --- a/as_covers/as_cech_class.sage +++ b/as_covers/as_cech_class.sage @@ -55,6 +55,7 @@ class as_cech: m = C.exponent r = C.polynomial.degree() n = AS.height + p = AS.characteristic RxyzQ, Rxyz, x, y, z = AS.fct_field if basis == 0: basis = [AS.holomorphic_differentials_basis(), AS.cohomology_of_structure_sheaf_basis(), AS.de_rham_basis(threshold=threshold)] diff --git a/as_covers/as_cover_class.sage b/as_covers/as_cover_class.sage index 8117715..07d47d3 100644 --- a/as_covers/as_cover_class.sage +++ b/as_covers/as_cover_class.sage @@ -373,7 +373,7 @@ class as_cover: 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 = 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) @@ -381,7 +381,7 @@ class as_cover: raise ValueError("Increase threshold!") for omega in forms: for a in F: - if (a*omega + fct.diffn()).form in Rxyz: + if (a*omega + fct.diffn()).is_regular_on_U0(): return a*omega + fct.diffn() raise ValueError("Unknown.") diff --git a/as_covers/as_form_class.sage b/as_covers/as_form_class.sage index 9622306..8cb3df4 100644 --- a/as_covers/as_form_class.sage +++ b/as_covers/as_form_class.sage @@ -166,6 +166,15 @@ class as_form: result += product_of_z_no_p * Rxyz(num).monomial_coefficient(monomial) * aux_form.form/den1 return as_form(C, result) raise ValueError("Please present first your form as sum z^i omega_i, where omega_i are forms on quotient curve.") + + def is_regular_on_U0(self): + AS = self.curve + C = AS.quotient + m = C.exponent + RxyzQ, Rxyz, x, y, z = AS.fct_field + if y^(m-1)*self.form in Rxyz: + return True + return False def artin_schreier_transform(power_series, prec = 10): """Given a power_series, find correction such that power_series - (correction)^p +correction has valuation