naprawiony brak (1/p)-liniowosci cartiera
This commit is contained in:
parent
a5c2ce2c64
commit
1f66cae85d
File diff suppressed because one or more lines are too long
@ -1,13 +1,14 @@
|
||||
p = 5
|
||||
p = 3
|
||||
m = 2
|
||||
F = GF(p)
|
||||
F = GF(p^2, 'a')
|
||||
a = F.gens()[0]
|
||||
Rxx.<x> = PolynomialRing(F)
|
||||
#f = (x^3 - x)^3 + x^3 - x
|
||||
f = x^3 + x
|
||||
f1 = f(x = x^5 - 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)
|
||||
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):
|
||||
@ -20,8 +21,15 @@ def crystalline_matrix(C, prec = 50):
|
||||
M[i, :] = vector(autom(b).coordinates(basis = B))
|
||||
return M
|
||||
|
||||
for b in B:
|
||||
print(b.regular_form())
|
||||
#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())
|
||||
|
@ -127,14 +127,14 @@ def cut(f, i):
|
||||
return sum(R(x^(j-i-1)) * coeff[j] for j in range(i+1, f.degree() + 1))
|
||||
|
||||
def polynomial_part(p, h):
|
||||
F = GF(p)
|
||||
F = base_ring(parent(h))
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
h = Rx(h)
|
||||
result = Rx(0)
|
||||
for i in range(0, h.degree()+1):
|
||||
if (i%p) == p-1:
|
||||
power = Integer((i-(p-1))/p)
|
||||
result += Integer(h[i]) * x^(power)
|
||||
result += F(h[i]) * x^(power)
|
||||
return result
|
||||
|
||||
#Find delta-th root of unity in field F
|
||||
|
@ -66,7 +66,11 @@ class superelliptic_form:
|
||||
h = Rx(h)
|
||||
j1 = (p^(mult_order-1)*j)%m
|
||||
B = floor(p^(mult_order-1)*j/m)
|
||||
result += superelliptic_form(C, polynomial_part(p, h)/(f^B*y^(j1)*h_denom))
|
||||
P = polynomial_part(p, h)
|
||||
if F.cardinality() != p:
|
||||
d = P.degree()
|
||||
P = sum(P[i].nth_root(p)*x^i for i in range(0, d+1))
|
||||
result += superelliptic_form(C, P/(f^B*y^(j1)*h_denom))
|
||||
return result
|
||||
|
||||
def serre_duality_pairing(self, fct, prec=20):
|
||||
|
@ -73,14 +73,22 @@ class superelliptic_regular_drw_form:
|
||||
return "[" + str(self.dx) + "] d[x] + [" + str(self.dy) + "] d[y] + V(" + str(self.omega) + ") + dV(" + str(self.h2) + ")"
|
||||
|
||||
def regular_drw_form(omega):
|
||||
print(omega.frobenius().is_regular_on_U0())
|
||||
C = omega.curve
|
||||
p = C.characteristic
|
||||
omega_aux = omega.r()
|
||||
omega_aux = omega_aux.regular_form()
|
||||
aux = omega - omega_aux.dx.teichmuller()*C.x.teichmuller().diffn() - omega_aux.dy.teichmuller()*C.y.teichmuller().diffn()
|
||||
print("aux == omega", aux == omega)
|
||||
aux1 = aux.omega
|
||||
aux.omega, fct = decomposition_omega0_hpdh(aux.omega)
|
||||
print('aux.omega, fct', aux.omega, fct, aux1.cartier() == fct.diffn(), aux1.verschiebung() == mult_by_p(fct.diffn()))
|
||||
print('mult_by_p(fct.diffn()) == (fct^p).verschiebung().diffn()', mult_by_p(fct.diffn()) == (fct^p).verschiebung().diffn())
|
||||
aux.h2 += fct^p
|
||||
print(aux.omega.is_regular_on_U0(), aux.frobenius().is_regular_on_U0())
|
||||
print('aux - omega', aux - omega)
|
||||
aux.h2, A = decomposition_g0_pth_power(aux.h2)
|
||||
print('A.diffn().is_regular_on_U0()', A.diffn().is_regular_on_U0())
|
||||
aux.omega += (A.diffn()).inv_cartier()
|
||||
result = superelliptic_regular_drw_form(omega_aux.dx, omega_aux.dy, aux.omega.regular_form(), aux.h2)
|
||||
return result
|
||||
@ -95,6 +103,8 @@ superelliptic_drw_cech.regular_form = regular_drw_cech
|
||||
def regular_form(omega):
|
||||
'''Given a form omega regular on U0, present it as P(x, y) dx + Q(x, y) dy for some polynomial P, Q.
|
||||
The output is A(x)*y, B(x), where omega = A(x) y dx + B(x) dy'''
|
||||
if not omega.is_regular_on_U0():
|
||||
raise ValueError("The form " + str(omega) + " is not regular on U0.")
|
||||
C = omega.curve
|
||||
f = C.polynomial
|
||||
Fxy, Rxy, x, y = C.fct_field
|
||||
|
@ -13,7 +13,10 @@ class superelliptic_drw_cech:
|
||||
f_second_comp = fct.f
|
||||
decomp_first_comp = decomposition_g0_g8(f_first_comp)
|
||||
decomp_second_comp = decomposition_g0_g8(f_second_comp)
|
||||
new = self
|
||||
new = superelliptic_drw_cech(0*C.dx.verschiebung(), 0*C.x.verschiebung())
|
||||
new.omega0 = self.omega0
|
||||
new.omega8 = self.omega8
|
||||
new.f = self.f
|
||||
new.omega0 -= decomposition_g0_g8(f_first_comp)[0].teichmuller().diffn()
|
||||
new.omega0 -= decomposition_g0_g8(f_second_comp)[0].verschiebung().diffn()
|
||||
new.f = decomposition_g0_g8(f_first_comp)[2].teichmuller() + decomposition_g0_g8(f_second_comp)[2].verschiebung()
|
||||
|
Loading…
Reference in New Issue
Block a user