diff --git a/as_covers/as_cover_class.sage b/as_covers/as_cover_class.sage index 95a94d1..7a5b9cd 100644 --- a/as_covers/as_cover_class.sage +++ b/as_covers/as_cover_class.sage @@ -175,15 +175,18 @@ class as_cover: forms = holomorphic_combinations(S) - for pt in self.branch_points[1:]: - forms = [(omega, omega.expansion(pt=pt)) for omega in forms] - forms = holomorphic_combinations(forms) + for i in range(delta): + for g in self.fiber(place = i): + if i!=0 or g != self.group.one: + forms = [(omega, omega.group_action(g).expansion_at_infty(i)) for omega in forms] + forms = holomorphic_combinations(forms) if len(forms) < self.genus(): print("I haven't found all forms, only ", len(forms), " of ", self.genus()) raise ValueError("Increase threshold.") #return holomorphic_differentials_basis(self, threshold = threshold + 1) if len(forms) > self.genus(): + print(len(forms), forms) raise ValueError("Increase precision.") return forms @@ -545,6 +548,13 @@ class as_cover: F = AS.base_ring return as_group_action_matrices(F, basis, AS.group.gens, basis = basis) + def group_action_matrices_poly(AS, mult, basis=0, threshold=10): + n = AS.height + if basis == 0: + basis = AS.holo_polydifferentials_basis(mult = mult, threshold=threshold) + F = AS.base_ring + return as_group_action_matrices(F, basis, AS.group.gens, basis = basis) + def group_action_matrices_dR(AS, basis = 0, threshold=8): n = AS.height if basis == 0: @@ -589,11 +599,9 @@ class as_cover: S += [(eta, eta_exp)] forms = holomorphic_combinations_fcts(S, pole_orders[(0, self.group.one)]) - print('iteration') for i in range(delta): for g in self.fiber(place = i): if i!=0 or g != self.group.one: - print('iteration') forms = [(omega, omega.group_action(g).expansion_at_infty(place = i)) for omega in forms] forms = holomorphic_combinations_fcts(forms, pole_orders[(i, g)]) return forms diff --git a/as_covers/as_form_class.sage b/as_covers/as_form_class.sage index 7a20051..ce6ee7e 100644 --- a/as_covers/as_form_class.sage +++ b/as_covers/as_form_class.sage @@ -88,10 +88,8 @@ class as_form: # We need to have only polynomials to use monomial_coefficients in linear_representation_polynomials, # and sometimes basis elements have denominators. Thus we multiply by them. denom = LCM([denominator(omega.form) for omega in basis]) - print(denom, basis, '\n') basis = [denom*omega for omega in basis] self_with_no_denominator = denom*self - print(self_with_no_denominator.form, [omega.form for omega in basis]) return linear_representation_polynomials(Rxyz(self_with_no_denominator.form), [Rxyz(omega.form) for omega in basis]) def trace(self, super=True): diff --git a/as_covers/as_polyforms.sage b/as_covers/as_polyforms.sage index cc6f35d..0bae42b 100644 --- a/as_covers/as_polyforms.sage +++ b/as_covers/as_polyforms.sage @@ -14,6 +14,11 @@ class as_polyform: def expansion_at_infty(self, place): return self.form.expansion_at_infty(place=place)*(self.curve.dx.expansion_at_infty(place=place))^(self.mult) + def reduce(self): + AS = self.curve + reduced = self.form.reduce() + return as_polyform(reduced, self.mult) + def coordinates(self, basis = 0): """Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo.""" AS = self.curve @@ -24,7 +29,8 @@ class as_polyform: # and sometimes basis elements have denominators. Thus we multiply by them. denom = LCM([denominator(omega.form.function) for omega in basis]) basis = [denom*omega.form.function for omega in basis] - self_with_no_denominator = denom*self.form.function + self_reduced = self.reduce() + self_with_no_denominator = denom*self_reduced.form.function return linear_representation_polynomials(Rxyz(self_with_no_denominator), [Rxyz(omega) for omega in basis]) def group_action(self, elt): @@ -69,7 +75,7 @@ def as_canonical_ideal(AS, n, threshold=8): g = AS.genus() RxyzQ, Rxyz, x, y, z = AS.fct_field from itertools import product - B1 = as_symmetric_power_basis(AS, n, threshold = 8) + B1 = as_symmetric_power_basis(AS, n, threshold = threshold) B2 = AS.holo_polydifferentials_basis(n, threshold = threshold) g = AS.genus() r = len(B2) diff --git a/as_covers/holomorphic_combinations.sage b/as_covers/holomorphic_combinations.sage index 6f931b0..beef128 100644 --- a/as_covers/holomorphic_combinations.sage +++ b/as_covers/holomorphic_combinations.sage @@ -41,7 +41,6 @@ def holomorphic_combinations_mixed(S): Rt. = LaurentSeriesRing(F, default_prec=prec) RtQ = FractionField(Rt) minimal_valuation = min([g[1].valuation() for g in S]) - print(minimal_valuation) if minimal_valuation >= 0: return [s[0] for s in S] list_of_lists = [] #to będzie lista złożona z list współczynników część nieholomorficznych rozwinięcia form z S