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
|
||||
r = C.polynomial.degree()
|
||||
RxyzQ, Rxyz, x, y, z = self.fct_field
|
||||
F = C.base_ring
|
||||
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
|
||||
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
|
||||
S = [(fct.diffn(), fct.diffn().expansion_at_infty())]
|
||||
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 j in range(0, m):
|
||||
for k in product(*pr):
|
||||
@ -385,9 +386,9 @@ class as_cover:
|
||||
|
||||
def de_rham_basis(self, threshold = 30):
|
||||
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))]
|
||||
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)
|
||||
result += [as_cech(self, omega, f)]
|
||||
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)
|
||||
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):
|
||||
'''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
|
||||
p = C_AS.characteristic
|
||||
F = C_AS.base_ring
|
||||
|
@ -56,13 +56,13 @@ class as_function:
|
||||
g1 = self.function
|
||||
return as_function(C, g1^(exponent))
|
||||
|
||||
def expansion_at_infty(self, i = 0):
|
||||
def expansion_at_infty(self, place = 0):
|
||||
C = self.curve
|
||||
delta = C.nb_of_pts_at_infty
|
||||
F = C.base_ring
|
||||
x_series = C.x_series[i]
|
||||
y_series = C.y_series[i]
|
||||
z_series = C.z_series[i]
|
||||
x_series = C.x_series[place]
|
||||
y_series = C.y_series[place]
|
||||
z_series = C.z_series[place]
|
||||
n = C.height
|
||||
variable_names = 'x, y'
|
||||
for j in range(n):
|
||||
@ -137,6 +137,22 @@ class as_function:
|
||||
result = as_reduction(AS, 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):
|
||||
C = self.curve
|
||||
@ -157,9 +173,9 @@ class as_function:
|
||||
result += f.derivative(z[i])*dz[i]
|
||||
return as_form(C, result)
|
||||
|
||||
def valuation(self, i = 0):
|
||||
def valuation(self, place = 0):
|
||||
'''Return valuation at i-th place at infinity.'''
|
||||
C = self.curve
|
||||
F = C.base_ring
|
||||
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()
|
||||
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
|
||||
n = C_AS.height
|
||||
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])
|
||||
variable_names = 'x, y'
|
||||
for j in range(n):
|
||||
|
@ -1,39 +1,8 @@
|
||||
p = 3
|
||||
m = 2
|
||||
F = GF(p^2, 'a')
|
||||
a = F.gens()[0]
|
||||
Rxx.<x> = PolynomialRing(F)
|
||||
#f = (x^3 - x)^3 + x^3 - x
|
||||
f = x^3 + a*x + 1
|
||||
f1 = f(x = x^p - x)
|
||||
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)
|
||||
p = 5
|
||||
m = 1
|
||||
F = GF(p)
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
f = x
|
||||
C = superelliptic(f, 1)
|
||||
AS1 = as_cover(C, [C.x^3], prec = 200)
|
||||
print(AS1.genus())
|
@ -28,8 +28,9 @@ load('auxilliaries/linear_combination_polynomials.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_klein_covers.sage')
|
||||
#load('drafty/draft_klein_covers.sage')
|
||||
#load('drafty/2gpcovers.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