as reduction (stare) plus macierz dzialania na bazie dR prawie dziala
This commit is contained in:
parent
c098f37690
commit
6494187dfe
15550
sage/.run.term-0.term
15550
sage/.run.term-0.term
File diff suppressed because one or more lines are too long
@ -36,4 +36,40 @@ class as_cech:
|
||||
C = self.curve
|
||||
omega = self.omega0
|
||||
f = self.f
|
||||
return as_form(C, constant*omega, constant*f)
|
||||
return as_cech(C, constant*omega, constant*f)
|
||||
|
||||
def coordinates(self, threshold=10, basis = 0):
|
||||
'''Find coordinates of self in the de Rham cohomology basis. Threshold is an argument passed to AS.de_rham_basis().'''
|
||||
AS = self.curve
|
||||
if basis == 0:
|
||||
basis = [AS.holomorphic_differentials_basis(), AS.cohomology_of_structure_sheaf_basis(), AS.de_rham_basis(threshold=threshold)]
|
||||
holo_diffs = basis[0]
|
||||
coh_basis = basis[1]
|
||||
dR = basis[2]
|
||||
F = AS.base_ring
|
||||
f_products = []
|
||||
for i, f in enumerate(coh_basis):
|
||||
f_products += [[]]
|
||||
for omega in holo_diffs:
|
||||
f_products[i] += [sum((f*omega).residue(place = _) for _ in range(AS.nb_of_pts_at_infty))]
|
||||
|
||||
product_of_fct_and_omegas = []
|
||||
fct = self.f
|
||||
for omega in holo_diffs:
|
||||
product_of_fct_and_omegas += [sum((fct*omega).residue(place = _) for _ in range(AS.nb_of_pts_at_infty))]
|
||||
|
||||
V = (F^(AS.genus())).span_of_basis([vector(a) for a in f_products])
|
||||
coh_coordinates = V.coordinates(product_of_fct_and_omegas) #coeficients of self in the basis elts coming from cohomology of OX
|
||||
for i in range(AS.genus()):
|
||||
self -= coh_coordinates[i]*dR[i+AS.genus()]
|
||||
|
||||
hol_form = self.omega0 + self.f.diffn() #now this should be a holomorphic form
|
||||
hol_form = hol_form
|
||||
print(hol_form)
|
||||
return hol_form.coordinates() + coh_coordinates
|
||||
|
||||
def group_action(self, g):
|
||||
AS = self.curve
|
||||
omega = self.omega0
|
||||
f = self.f
|
||||
return as_cech(self.curve, omega.group_action(g), f.group_action(g))
|
@ -370,7 +370,7 @@ class as_cover:
|
||||
def de_rham_basis(self, threshold = 30):
|
||||
result = []
|
||||
for omega in self.holomorphic_differentials_basis():
|
||||
result += [(omega, 0)]
|
||||
result += [as_cech(self, omega, as_function(self, 0))]
|
||||
for f in self.cohomology_of_structure_sheaf_basis():
|
||||
omega = self.lift_to_de_rham(f, threshold = threshold)
|
||||
result += [as_cech(self, omega, f)]
|
||||
|
@ -69,19 +69,18 @@ class as_form:
|
||||
g = self.form
|
||||
return as_form(C, g.substitute(sub_list))
|
||||
|
||||
def coordinates(self, holo):
|
||||
"""Find coordinates of the given form self in terms of the basis forms in a list holo."""
|
||||
def coordinates(self, basis = 0):
|
||||
"""Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo."""
|
||||
C = self.curve
|
||||
n = C.height
|
||||
gC = C.genus()
|
||||
F = C.base_ring
|
||||
variable_names = 'x, y'
|
||||
for j in range(n):
|
||||
variable_names += ', z' + str(j)
|
||||
Rxyz = PolynomialRing(F, n+2, variable_names)
|
||||
x, y = Rxyz.gens()[:2]
|
||||
z = Rxyz.gens()[2:]
|
||||
return linear_representation_polynomials(Rxyz(self.form), holo)
|
||||
if basis == 0:
|
||||
basis = C.holomorphic_differentials_basis()
|
||||
RxyzQ, Rxyz, x, y, z = C.fct_field
|
||||
# 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])
|
||||
basis = [denom*omega for omega in basis]
|
||||
self_with_no_denominator = denom*self
|
||||
return linear_representation_polynomials(Rxyz(self_with_no_denominator.form), [Rxyz(omega.form) for omega in basis])
|
||||
|
||||
def trace(self):
|
||||
C = self.curve
|
||||
|
32
sage/as_covers/as_reduction.sage
Normal file
32
sage/as_covers/as_reduction.sage
Normal file
@ -0,0 +1,32 @@
|
||||
def as_reduction(AS, fct):
|
||||
'''Simplify rational function fct as a function in the function field of AS, so that z[i] appear in powers <p and only in numerator'''
|
||||
n = AS.height
|
||||
F = AS.base_ring
|
||||
RxyzQ, Rxyz, x, y, z = AS.fct_field
|
||||
ff = AS.functions
|
||||
ff = [RxyzQ(F.function) for F in ff]
|
||||
fct = RxyzQ(fct)
|
||||
fct1 = numerator(fct)
|
||||
fct2 = denominator(fct)
|
||||
denom = as_function(AS, fct2)
|
||||
denom_norm = prod(as_function(AS, fct2).group_action(g) for g in AS.group if list(g) != n*[0])
|
||||
fct1 = Rxyz(fct1*denom_norm.function)
|
||||
fct2 = Rxyz(fct2*denom_norm.function)
|
||||
if fct2 != 1:
|
||||
return as_reduction(AS, fct1)/as_reduction(AS, fct2)
|
||||
|
||||
result = RxyzQ(0)
|
||||
change = 0
|
||||
for a in fct1.monomials():
|
||||
degrees_zi = [a.degree(z[i]) for i in range(n)]
|
||||
d_div = [a.degree(z[i])//p for i in range(n)]
|
||||
if d_div != n*[0]:
|
||||
change = 1
|
||||
d_rem = [a.degree(z[i])%p for i in range(n)]
|
||||
monomial = fct1.monomial_coefficient(a)*x^(a.degree(x))*y^(a.degree(y))*prod(z[i]^(d_rem[i]) for i in range(n))*prod((z[i] + ff[i])^(d_div[i]) for i in range(n))
|
||||
result += RxyzQ(monomial)
|
||||
|
||||
if change == 0:
|
||||
return RxyzQ(result)
|
||||
else:
|
||||
return as_reduction(AS, RxyzQ(result))
|
@ -1,4 +1,34 @@
|
||||
def group_action_matrices(C_AS):
|
||||
def group_action_matrices(space, list_of_group_elements, basis):
|
||||
n = len(list_of_group_elements)
|
||||
d = len(space)
|
||||
A = [matrix(F, d, d) for i in range(n)]
|
||||
for i, g in enumerate(list_of_group_elements):
|
||||
for j, omega in enumerate(space):
|
||||
omega1 = omega.group_action(g)
|
||||
v1 = omega1.coordinates(basis = basis)
|
||||
A[i][:, j] = vector(v1)
|
||||
return A
|
||||
|
||||
def group_action_matrices_holo(AS):
|
||||
n = AS.height
|
||||
generators = []
|
||||
for i in range(n):
|
||||
ei = n*[0]
|
||||
ei[i] = 1
|
||||
generators += [ei]
|
||||
return group_action_matrices(AS.holomorphic_differentials_basis(), generators, basis = AS.holomorphic_differentials_basis())
|
||||
|
||||
def group_action_matrices_dR(AS, threshold=8):
|
||||
n = AS.height
|
||||
generators = []
|
||||
for i in range(n):
|
||||
ei = n*[0]
|
||||
ei[i] = 1
|
||||
generators += [ei]
|
||||
basis = [AS.holomorphic_differentials_basis(), AS.cohomology_of_structure_sheaf_basis(), AS.de_rham_basis(threshold=threshold)]
|
||||
return group_action_matrices(basis[2], generators, basis = basis)
|
||||
|
||||
def group_action_matrices_old(C_AS):
|
||||
F = C_AS.base_ring
|
||||
n = C_AS.height
|
||||
holo = C_AS.holomorphic_differentials_basis()
|
||||
|
@ -10,7 +10,7 @@ f1 = superelliptic_function(C_super, x^2*y)
|
||||
f2 = superelliptic_function(C_super, x^3)
|
||||
AS = as_cover(C_super, [f1, f2], prec=1000)
|
||||
|
||||
A, B = group_action_matrices(AS)
|
||||
A, B = group_action_matrices_holo(AS)
|
||||
n = A.dimensions()[0]
|
||||
print(A*B == B*A)
|
||||
print(A^p == identity_matrix(n))
|
||||
|
@ -5,6 +5,7 @@ load('superelliptic/superelliptic_cech_class.sage')
|
||||
load('as_covers/as_cover_class.sage')
|
||||
load('as_covers/as_function_class.sage')
|
||||
load('as_covers/as_form_class.sage')
|
||||
load('as_covers/as_cech_class.sage')
|
||||
load('as_covers/as_reduction.sage')
|
||||
load('as_covers/as_auxilliary.sage')
|
||||
load('as_covers/dual_element.sage')
|
||||
@ -17,6 +18,6 @@ load('auxilliaries/linear_combination_polynomials.sage')
|
||||
##############
|
||||
##############
|
||||
load('drafty/lift_to_de_rham.sage')
|
||||
load('drafty/draft3.sage')
|
||||
load('drafty/draft5.sage')
|
||||
load('drafty/pole_numbers.sage')
|
||||
#load('drafty/draft4.sage')
|
@ -1,16 +1,16 @@
|
||||
#print("as_cover_test:")
|
||||
#load('as_covers/tests/as_cover_test.sage')
|
||||
#print("group_action_matrices_test:")
|
||||
#load('as_covers/tests/group_action_matrices_test.sage')
|
||||
load('as_covers/tests/group_action_matrices_test.sage')
|
||||
#print("dual_element_test:")
|
||||
#load('as_covers/tests/dual_element_test.sage')
|
||||
print("ith_component_test:")
|
||||
load('as_covers/tests/ith_component_test.sage')
|
||||
#print("ith_component_test:")
|
||||
#load('as_covers/tests/ith_component_test.sage')
|
||||
#print("ith ramification group test:")
|
||||
#load('as_covers/tests/ith_ramification_gp_test.sage')
|
||||
#print("uniformizer test:")
|
||||
#load('as_covers/tests/uniformizer_test.sage')
|
||||
#print("ramification jumps test:")
|
||||
#load('as_covers/tests/ramification_jumps_test.sage')
|
||||
print("diffn_test:")
|
||||
load('as_covers/tests/diffn_test.sage')
|
||||
#print("diffn_test:")
|
||||
#load('as_covers/tests/diffn_test.sage')
|
Loading…
Reference in New Issue
Block a user