holomorphic differentials for non totally ramified covers
This commit is contained in:
parent
91e66e7c7a
commit
b902e3fdca
@ -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
|
||||
|
@ -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):
|
||||
|
@ -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)
|
||||
|
@ -41,7 +41,6 @@ def holomorphic_combinations_mixed(S):
|
||||
Rt.<t> = 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
|
||||
|
Loading…
Reference in New Issue
Block a user