frobenius kernel
This commit is contained in:
parent
5e738d441d
commit
599aa94db7
20437
sage/.run.term-0.term
20437
sage/.run.term-0.term
File diff suppressed because one or more lines are too long
@ -172,6 +172,7 @@ class as_cover:
|
|||||||
m = C.exponent
|
m = C.exponent
|
||||||
r = C.polynomial.degree()
|
r = C.polynomial.degree()
|
||||||
RxyzQ, Rxyz, x, y, z = self.fct_field
|
RxyzQ, Rxyz, x, y, z = self.fct_field
|
||||||
|
F = C.base_ring
|
||||||
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
||||||
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
||||||
S = []
|
S = []
|
||||||
@ -367,7 +368,7 @@ class as_cover:
|
|||||||
#Tworzymy zbiór S form z^i x^j y^k dx/y o waluacji >= waluacja z^(p-1)*dx/y
|
#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())]
|
S = [(fct.diffn(), fct.diffn().expansion_at_infty())]
|
||||||
pr = [list(GF(p)) for _ in range(n)]
|
pr = [list(GF(p)) for _ in range(n)]
|
||||||
holo = self.holomorphic_differentials_basis()
|
holo = self.holomorphic_differentials_basis(threshold = threshold)
|
||||||
for i in range(0, threshold*r):
|
for i in range(0, threshold*r):
|
||||||
for j in range(0, m):
|
for j in range(0, m):
|
||||||
for k in product(*pr):
|
for k in product(*pr):
|
||||||
@ -385,9 +386,9 @@ class as_cover:
|
|||||||
|
|
||||||
def de_rham_basis(self, threshold = 30):
|
def de_rham_basis(self, threshold = 30):
|
||||||
result = []
|
result = []
|
||||||
for omega in self.holomorphic_differentials_basis():
|
for omega in self.holomorphic_differentials_basis(threshold = threshold):
|
||||||
result += [as_cech(self, omega, as_function(self, 0))]
|
result += [as_cech(self, omega, as_function(self, 0))]
|
||||||
for f in self.cohomology_of_structure_sheaf_basis():
|
for f in self.cohomology_of_structure_sheaf_basis(threshold = threshold):
|
||||||
omega = self.lift_to_de_rham(f, threshold = threshold)
|
omega = self.lift_to_de_rham(f, threshold = threshold)
|
||||||
result += [as_cech(self, omega, f)]
|
result += [as_cech(self, omega, f)]
|
||||||
return result
|
return result
|
||||||
|
@ -210,8 +210,8 @@ def are_forms_linearly_dependent(set_of_forms):
|
|||||||
denominators = prod(denominator(omega.form) for omega in set_of_forms)
|
denominators = prod(denominator(omega.form) for omega in set_of_forms)
|
||||||
return is_linearly_dependent([Rxyz(denominators*omega.form) for omega in set_of_forms])
|
return is_linearly_dependent([Rxyz(denominators*omega.form) for omega in set_of_forms])
|
||||||
|
|
||||||
#given a set S of (form, corresponding Laurent series at some pt), find their combinations holomorphic at that pt
|
|
||||||
def holomorphic_combinations_fcts(S, pole_order):
|
def holomorphic_combinations_fcts(S, pole_order):
|
||||||
|
'''given a set S of (form, corresponding Laurent series at some pt), find their combinations holomorphic at that pt'''
|
||||||
C_AS = S[0][0].curve
|
C_AS = S[0][0].curve
|
||||||
p = C_AS.characteristic
|
p = C_AS.characteristic
|
||||||
F = C_AS.base_ring
|
F = C_AS.base_ring
|
||||||
|
@ -56,13 +56,13 @@ class as_function:
|
|||||||
g1 = self.function
|
g1 = self.function
|
||||||
return as_function(C, g1^(exponent))
|
return as_function(C, g1^(exponent))
|
||||||
|
|
||||||
def expansion_at_infty(self, i = 0):
|
def expansion_at_infty(self, place = 0):
|
||||||
C = self.curve
|
C = self.curve
|
||||||
delta = C.nb_of_pts_at_infty
|
delta = C.nb_of_pts_at_infty
|
||||||
F = C.base_ring
|
F = C.base_ring
|
||||||
x_series = C.x_series[i]
|
x_series = C.x_series[place]
|
||||||
y_series = C.y_series[i]
|
y_series = C.y_series[place]
|
||||||
z_series = C.z_series[i]
|
z_series = C.z_series[place]
|
||||||
n = C.height
|
n = C.height
|
||||||
variable_names = 'x, y'
|
variable_names = 'x, y'
|
||||||
for j in range(n):
|
for j in range(n):
|
||||||
@ -137,6 +137,22 @@ class as_function:
|
|||||||
result = as_reduction(AS, result)
|
result = as_reduction(AS, result)
|
||||||
return superelliptic_function(C_super, Qxy(result))
|
return superelliptic_function(C_super, Qxy(result))
|
||||||
|
|
||||||
|
def coordinates(self, prec = 100, basis = 0):
|
||||||
|
"Return coordinates in H^1(X, OX)."
|
||||||
|
AS = self.curve
|
||||||
|
if basis == 0:
|
||||||
|
basis = [AS.holomorphic_differentials_basis(), AS.cohomology_of_structure_sheaf_basis()]
|
||||||
|
holo_diffs = basis[0]
|
||||||
|
coh_basis = basis[1]
|
||||||
|
f_products = []
|
||||||
|
for f in coh_basis:
|
||||||
|
f_products += [[omega.serre_duality_pairing(f) for omega in holo_diffs]]
|
||||||
|
product_of_fct_and_omegas = []
|
||||||
|
product_of_fct_and_omegas = [omega.serre_duality_pairing(self) for omega in holo_diffs]
|
||||||
|
|
||||||
|
V = (F^(AS.genus())).span_of_basis([vector(a) for a in f_products])
|
||||||
|
coh_coordinates = V.coordinates(product_of_fct_and_omegas)
|
||||||
|
return coh_coordinates
|
||||||
|
|
||||||
def diffn(self):
|
def diffn(self):
|
||||||
C = self.curve
|
C = self.curve
|
||||||
@ -157,9 +173,9 @@ class as_function:
|
|||||||
result += f.derivative(z[i])*dz[i]
|
result += f.derivative(z[i])*dz[i]
|
||||||
return as_form(C, result)
|
return as_form(C, result)
|
||||||
|
|
||||||
def valuation(self, i = 0):
|
def valuation(self, place = 0):
|
||||||
'''Return valuation at i-th place at infinity.'''
|
'''Return valuation at i-th place at infinity.'''
|
||||||
C = self.curve
|
C = self.curve
|
||||||
F = C.base_ring
|
F = C.base_ring
|
||||||
Rt.<t> = LaurentSeriesRing(F)
|
Rt.<t> = LaurentSeriesRing(F)
|
||||||
return Rt(self.expansion_at_infty(i)).valuation()
|
return Rt(self.expansion_at_infty(place = place)).valuation()
|
||||||
|
@ -55,11 +55,20 @@ def group_action_matrices_old(C_AS):
|
|||||||
A[i] = A[i].transpose()
|
A[i] = A[i].transpose()
|
||||||
return A
|
return A
|
||||||
|
|
||||||
def group_action_matrices_log(C_AS):
|
def group_action_matrices_log(AS):
|
||||||
|
n = AS.height
|
||||||
|
generators = []
|
||||||
|
for i in range(n):
|
||||||
|
ei = n*[0]
|
||||||
|
ei[i] = 1
|
||||||
|
generators += [ei]
|
||||||
|
return group_action_matrices(AS.at_most_poles_forms(1), generators, basis = AS.at_most_poles_forms(1))
|
||||||
|
|
||||||
|
def group_action_matrices_log_old(C_AS):
|
||||||
F = C_AS.base_ring
|
F = C_AS.base_ring
|
||||||
n = C_AS.height
|
n = C_AS.height
|
||||||
holo = C_AS.at_most_poles_forms(1)
|
holo = C_AS.at_most_poles_forms(1)
|
||||||
holo_forms = [omega.form for omega in holo]
|
holo_forms = [omega for omega in holo]
|
||||||
denom = LCM([denominator(omega) for omega in holo_forms])
|
denom = LCM([denominator(omega) for omega in holo_forms])
|
||||||
variable_names = 'x, y'
|
variable_names = 'x, y'
|
||||||
for j in range(n):
|
for j in range(n):
|
||||||
|
@ -1,39 +1,8 @@
|
|||||||
p = 3
|
p = 5
|
||||||
m = 2
|
m = 1
|
||||||
F = GF(p^2, 'a')
|
F = GF(p)
|
||||||
a = F.gens()[0]
|
Rx.<x> = PolynomialRing(F)
|
||||||
Rxx.<x> = PolynomialRing(F)
|
f = x
|
||||||
#f = (x^3 - x)^3 + x^3 - x
|
C = superelliptic(f, 1)
|
||||||
f = x^3 + a*x + 1
|
AS1 = as_cover(C, [C.x^3], prec = 200)
|
||||||
f1 = f(x = x^p - x)
|
print(AS1.genus())
|
||||||
C = superelliptic(f, m)
|
|
||||||
C1 = superelliptic(f1, m, prec = 500)
|
|
||||||
#B = C.crystalline_cohomology_basis(prec = 100, info = 1)
|
|
||||||
#B1 = C1.crystalline_cohomology_basis(prec = 100, info = 1)
|
|
||||||
|
|
||||||
def crystalline_matrix(C, prec = 50):
|
|
||||||
B = C.crystalline_cohomology_basis(prec = prec)
|
|
||||||
g = C.genus()
|
|
||||||
p = C.characteristic
|
|
||||||
Zp2 = Integers(p^2)
|
|
||||||
M = matrix(Zp2, 2*g, 2*g)
|
|
||||||
for i, b in enumerate(B):
|
|
||||||
M[i, :] = vector(autom(b).coordinates(basis = B))
|
|
||||||
return M
|
|
||||||
|
|
||||||
#b0 = de_rham_witt_lift(C.de_rham_basis()[0], prec = 100)
|
|
||||||
#b1 = de_rham_witt_lift(C1.de_rham_basis()[2], prec = 300)
|
|
||||||
#print(b0.regular_form())
|
|
||||||
#print(b1.regular_form())
|
|
||||||
for b in C1.de_rham_basis():
|
|
||||||
print(mult_by_p(b.omega0).regular_form())
|
|
||||||
|
|
||||||
#for b in B:
|
|
||||||
# print(b.regular_form())
|
|
||||||
|
|
||||||
#for b in B1:
|
|
||||||
# print(b.regular_form())
|
|
||||||
|
|
||||||
#M = crystalline_matrix(C, prec = 150)
|
|
||||||
#print(M)
|
|
||||||
#print(M^3)
|
|
@ -28,8 +28,9 @@ load('auxilliaries/linear_combination_polynomials.sage')
|
|||||||
load('auxilliaries/laurent_analytic_part.sage')
|
load('auxilliaries/laurent_analytic_part.sage')
|
||||||
##############
|
##############
|
||||||
##############
|
##############
|
||||||
load('drafty/convert_superelliptic_into_AS.sage')
|
#load('drafty/convert_superelliptic_into_AS.sage')
|
||||||
load('drafty/draft.sage')
|
load('drafty/draft.sage')
|
||||||
#load('drafty/draft_klein_covers.sage')
|
#load('drafty/draft_klein_covers.sage')
|
||||||
|
#load('drafty/draft_klein_covers.sage')
|
||||||
#load('drafty/2gpcovers.sage')
|
#load('drafty/2gpcovers.sage')
|
||||||
load('drafty/pole_numbers.sage')
|
load('drafty/pole_numbers.sage')
|
25
sage/superelliptic/frobenius_kernel.sage
Normal file
25
sage/superelliptic/frobenius_kernel.sage
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
def frobenius_kernel(C, prec=50):
|
||||||
|
M = C.frobenius_matrix(prec=prec).transpose()
|
||||||
|
K = M.kernel().basis()
|
||||||
|
g = C.genus()
|
||||||
|
result = []
|
||||||
|
basis = C.cohomology_of_structure_sheaf_basis()
|
||||||
|
for v in K:
|
||||||
|
coh = 0*C.x
|
||||||
|
for i in range(g):
|
||||||
|
coh += v[i] * basis[i]
|
||||||
|
result += [coh]
|
||||||
|
return result
|
||||||
|
|
||||||
|
def cartier_kernel(C, prec=50):
|
||||||
|
M = C.cartier_matrix(prec=prec).transpose()
|
||||||
|
K = M.kernel().basis()
|
||||||
|
g = C.genus()
|
||||||
|
result = []
|
||||||
|
basis = C.holomorphic_differentials_basis()
|
||||||
|
for v in K:
|
||||||
|
coh = 0*C.dx
|
||||||
|
for i in range(g):
|
||||||
|
coh += v[i] * basis[i]
|
||||||
|
result += [coh]
|
||||||
|
return result
|
Loading…
Reference in New Issue
Block a user