przed zmiana w expansion at infty w superelliptic
This commit is contained in:
parent
a9d055aa55
commit
eda1cca0c2
File diff suppressed because one or more lines are too long
@ -1,28 +1,25 @@
|
|||||||
p = 3
|
p = 5
|
||||||
m = 2
|
m = 2
|
||||||
F = GF(p)
|
F = GF(p)
|
||||||
Rx.<x> = PolynomialRing(F)
|
Rx.<x> = PolynomialRing(F)
|
||||||
f = x^3 - x
|
#f = (x^3 - x)^3 + x^3 - x
|
||||||
|
f = x^3 + x
|
||||||
|
f1 = f(x = x^5 - x)
|
||||||
C = superelliptic(f, m)
|
C = superelliptic(f, m)
|
||||||
#C1 = patch(C)
|
C1 = superelliptic(f1, m)
|
||||||
#print(C1.crystalline_cohomology_basis())
|
B = C.crystalline_cohomology_basis(prec = 100, info = 1)
|
||||||
#g1 = C1.polynomial
|
B1 = C1.crystalline_cohomology_basis(prec = 500, info = 1)
|
||||||
#g_AS = g1(x^p - x)
|
|
||||||
#C2 = superelliptic(g_AS, 2)
|
|
||||||
#print(convert_super_into_AS(C2))
|
|
||||||
#converted = (C2.x)^4 - (C2.x)^2
|
|
||||||
#print(convert_super_fct_into_AS(converted))
|
|
||||||
#b = C.crystalline_cohomology_basis()
|
|
||||||
#print(autom(b[0]).coordinates(basis = b))
|
|
||||||
#eta1 = (dy + dV(2xy) + V(x^5 \, dy), V(y/x))
|
|
||||||
#eta1 = superelliptic_drw_cech(C.y.teichmuller().diffn() + (2*C.x*C.y).verschiebung().diffn() + (C.x^5*C.y.diffn()).verschiebung(), (C.y/C.x).verschiebung())
|
|
||||||
#eta2 = ( x \, dy + 3 x^3 \, dy + dV((2x^4 + 2x^2 + 2) y) + V( (x^4 + x^2 + 1) dy), -[y/x])
|
|
||||||
#eta2 = superelliptic_drw_cech(C.x.teichmuller()*(C.y.teichmuller()).diffn() + ((2*C.x^4 + 2*C.x^2 + 2*C.one) * C.y).verschiebung().diffn(), - (C.y/C.x).teichmuller())
|
|
||||||
#omega8_lift0, compare = de_rham_witt_lift(C.de_rham_basis()[1])
|
|
||||||
#omega8_lift = -(C.x^(-3)).teichmuller()*C.y.teichmuller().diffn() + 2*C.y.teichmuller()*(C.x^(-4)).teichmuller()*C.x.teichmuller().diffn()
|
|
||||||
#eta2 = de_rham_witt_lift(C.de_rham_basis()[1])
|
|
||||||
#b = autom(eta2)
|
|
||||||
#print(autom(C.crystalline_cohomology_basis()[1]).coordinates())
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
#M = crystalline_matrix(C, prec = 150)
|
||||||
|
#print(M)
|
||||||
|
#print(M^3)
|
@ -22,9 +22,7 @@ def de_rham_witt_lift(cech_class, prec = 50):
|
|||||||
fct = cech_class.f
|
fct = cech_class.f
|
||||||
omega0_lift = de_rham_witt_lift_form0(omega0)
|
omega0_lift = de_rham_witt_lift_form0(omega0)
|
||||||
omega8_lift = de_rham_witt_lift_form8(omega8)
|
omega8_lift = de_rham_witt_lift_form8(omega8)
|
||||||
print('omega0_lift, omega8_lift', omega0_lift, omega8_lift)
|
|
||||||
aux = omega0_lift - omega8_lift - fct.teichmuller().diffn() # now aux is of the form (V(smth) + dV(smth), V(smth))
|
aux = omega0_lift - omega8_lift - fct.teichmuller().diffn() # now aux is of the form (V(smth) + dV(smth), V(smth))
|
||||||
#return aux
|
|
||||||
if aux.h1.function != 0:
|
if aux.h1.function != 0:
|
||||||
raise ValueError('Something went wrong - aux is not of the form (V(smth) + dV(smth), V(smth)).')
|
raise ValueError('Something went wrong - aux is not of the form (V(smth) + dV(smth), V(smth)).')
|
||||||
decom_aux_h2 = decomposition_g0_g8(aux.h2, prec=prec) #decompose dV(smth) in aux as smth regular on U0 - smth regular on U8.
|
decom_aux_h2 = decomposition_g0_g8(aux.h2, prec=prec) #decompose dV(smth) in aux as smth regular on U0 - smth regular on U8.
|
||||||
@ -32,24 +30,21 @@ def de_rham_witt_lift(cech_class, prec = 50):
|
|||||||
aux_f = decom_aux_h2[2]
|
aux_f = decom_aux_h2[2]
|
||||||
aux_omega0 = decomposition_omega0_omega8(aux.omega, prec=prec)[0]
|
aux_omega0 = decomposition_omega0_omega8(aux.omega, prec=prec)[0]
|
||||||
result = superelliptic_drw_cech(omega0_lift - aux_omega0.verschiebung(), fct.teichmuller() + aux_h2.verschiebung() + aux_f.verschiebung())
|
result = superelliptic_drw_cech(omega0_lift - aux_omega0.verschiebung(), fct.teichmuller() + aux_h2.verschiebung() + aux_f.verschiebung())
|
||||||
compare = omega8_lift-decom_aux_h2[1].verschiebung().diffn() - decomposition_omega0_omega8(aux.omega, prec=prec)[1].verschiebung()
|
return result
|
||||||
print("result.omega8 == compare", result.omega8 == compare)
|
|
||||||
print("result.omega8 - compare", result.omega8 - compare)
|
|
||||||
|
|
||||||
#print('test:', omega0_lift - omega8_lift - fct.teichmuller().diffn() == decom_aux_h2[0].verschiebung().diffn() - decom_aux_h2[1].verschiebung().diffn() + decomposition_omega0_omega8(aux.omega, prec=prec)[0].verschiebung() - decomposition_omega0_omega8(aux.omega, prec=prec)[1].verschiebung())
|
def crystalline_cohomology_basis(self, prec = 50, info = 0):
|
||||||
#print('test 1:', omega0_lift - decom_aux_h2[0].verschiebung().diffn() - decomposition_omega0_omega8(aux.omega, prec=prec)[0].verschiebung() - fct.teichmuller().diffn() == omega8_lift - decom_aux_h2[1].verschiebung().diffn() - decomposition_omega0_omega8(aux.omega, prec=prec)[1].verschiebung())
|
|
||||||
#A = omega0_lift - decomposition_omega0_omega8(aux.omega, prec=prec)[0].verschiebung()
|
|
||||||
#B = decom_aux_h2[0].verschiebung() + fct.teichmuller()
|
|
||||||
#C = omega8_lift - decom_aux_h2[1].verschiebung().diffn() - decomposition_omega0_omega8(aux.omega, prec=prec)[1].verschiebung()
|
|
||||||
#print('test 2:', A - B.diffn() == C)
|
|
||||||
#print('test 3:', result.omega0 == A, result.f == B, result.omega8 == C)
|
|
||||||
#print(result.omega8, '\n \n', compare, '\n \n', aux_f, '\n \n')
|
|
||||||
return result#.reduce()
|
|
||||||
|
|
||||||
def crystalline_cohomology_basis(self, prec = 50):
|
|
||||||
result = []
|
result = []
|
||||||
for a in self.de_rham_basis():
|
for i, a in enumerate(self.de_rham_basis()):
|
||||||
result += [de_rham_witt_lift(a, prec = prec)]
|
if info:
|
||||||
|
print("Computing " + str(i) +". basis element")
|
||||||
|
prec1 = prec
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
result += [de_rham_witt_lift(a, prec = prec1)]
|
||||||
|
break
|
||||||
|
except IndexError:
|
||||||
|
prec1 += 100
|
||||||
|
result += [de_rham_witt_lift(a, prec = prec1)]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
superelliptic.crystalline_cohomology_basis = crystalline_cohomology_basis
|
superelliptic.crystalline_cohomology_basis = crystalline_cohomology_basis
|
@ -66,7 +66,7 @@ class superelliptic_regular_drw_form:
|
|||||||
B = self.dy
|
B = self.dy
|
||||||
h2 = self.h2
|
h2 = self.h2
|
||||||
omega = self.omega
|
omega = self.omega
|
||||||
form1 = superelliptic_drw_form(A, omega, h2)
|
form1 = superelliptic_drw_form(A, omega.form(), h2)
|
||||||
form2 = B.teichmuller()*C.y.teichmuller().diffn()
|
form2 = B.teichmuller()*C.y.teichmuller().diffn()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
@ -77,11 +77,19 @@ def regular_drw_form(omega):
|
|||||||
omega_aux = omega.r()
|
omega_aux = omega.r()
|
||||||
omega_aux = omega_aux.regular_form()
|
omega_aux = omega_aux.regular_form()
|
||||||
aux = omega - omega_aux.dx.teichmuller()*C.x.teichmuller().diffn() - omega_aux.dy.teichmuller()*C.y.teichmuller().diffn()
|
aux = omega - omega_aux.dx.teichmuller()*C.x.teichmuller().diffn() - omega_aux.dy.teichmuller()*C.y.teichmuller().diffn()
|
||||||
result = superelliptic_regular_drw_form(omega_aux.dx, omega_aux.dy, aux.omega, aux.h2)
|
aux.omega, fct = decomposition_omega0_hpdh(aux.omega)
|
||||||
|
aux.h2 += fct^p
|
||||||
|
aux.h2 = decomposition_g0_p2th_power(aux.h2)[0]
|
||||||
|
result = superelliptic_regular_drw_form(omega_aux.dx, omega_aux.dy, aux.omega.regular_form(), aux.h2)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
superelliptic_drw_form.regular_form = regular_drw_form
|
superelliptic_drw_form.regular_form = regular_drw_form
|
||||||
|
|
||||||
|
def regular_drw_cech(cocycle):
|
||||||
|
return("( " + str(cocycle.omega0.regular_form()) + ", " + str(cocycle.f) + " )")
|
||||||
|
|
||||||
|
superelliptic_drw_cech.regular_form = regular_drw_cech
|
||||||
|
|
||||||
def regular_form(omega):
|
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.
|
'''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'''
|
The output is A(x)*y, B(x), where omega = A(x) y dx + B(x) dy'''
|
||||||
|
@ -20,7 +20,6 @@ def decomposition_omega0_hpdh(omega):
|
|||||||
return (omega1, fct)
|
return (omega1, fct)
|
||||||
|
|
||||||
def decomposition_omega8_hpdh(omega, prec = 50):
|
def decomposition_omega8_hpdh(omega, prec = 50):
|
||||||
print('decomposition_omega8_hpdh', omega)
|
|
||||||
'''Decompose omega = (regular on U8) + h^(p-1) dh, so that Cartier(omega) = (regular on U8) + dh.
|
'''Decompose omega = (regular on U8) + h^(p-1) dh, so that Cartier(omega) = (regular on U8) + dh.
|
||||||
Result: (regular on U8, h)'''
|
Result: (regular on U8, h)'''
|
||||||
C = omega.curve
|
C = omega.curve
|
||||||
@ -30,23 +29,16 @@ def decomposition_omega8_hpdh(omega, prec = 50):
|
|||||||
p = C.characteristic
|
p = C.characteristic
|
||||||
Rt.<t> = LaurentSeriesRing(F)
|
Rt.<t> = LaurentSeriesRing(F)
|
||||||
omega_analytic = Rt(laurent_analytic_part(omega.expansion_at_infty(prec = prec)))
|
omega_analytic = Rt(laurent_analytic_part(omega.expansion_at_infty(prec = prec)))
|
||||||
print('omega_analytic', omega_analytic)
|
|
||||||
Cv = C.uniformizer()
|
Cv = C.uniformizer()
|
||||||
v = Fxy(Cv.function)
|
v = Fxy(Cv.function)
|
||||||
omega_analytic = Fxy(omega_analytic(t = v))
|
omega_analytic = Fxy(omega_analytic(t = v))
|
||||||
omega_analytic = superelliptic_function(C, omega_analytic)*Cv.diffn()
|
omega_analytic = superelliptic_function(C, omega_analytic)*Cv.diffn()
|
||||||
print('omega_analytic.expansion_at_infty()', omega_analytic.expansion_at_infty(prec = prec))
|
|
||||||
print('omega_analytic', omega_analytic)
|
|
||||||
omega8 = omega - omega_analytic
|
omega8 = omega - omega_analytic
|
||||||
print('omega8', omega8)
|
|
||||||
dh = omega.cartier() - omega8.cartier()
|
dh = omega.cartier() - omega8.cartier()
|
||||||
print('dh', dh)
|
|
||||||
h = dh.int()
|
h = dh.int()
|
||||||
print('omega8.expansion_at_infty()', omega8.expansion_at_infty(prec = prec))
|
|
||||||
return (omega8, h)
|
return (omega8, h)
|
||||||
|
|
||||||
def decomposition_g8_pth_power(fct, prec = 50):
|
def decomposition_g8_pth_power(fct, prec = 50):
|
||||||
print('decomposition_g8_pth_power', fct)
|
|
||||||
'''Decompose fct as g8 + A^p, if possible. Output: (g8, A).'''
|
'''Decompose fct as g8 + A^p, if possible. Output: (g8, A).'''
|
||||||
C = fct.curve
|
C = fct.curve
|
||||||
F = C.base_ring
|
F = C.base_ring
|
||||||
@ -62,7 +54,6 @@ def decomposition_g8_pth_power(fct, prec = 50):
|
|||||||
return (g8, A)
|
return (g8, A)
|
||||||
|
|
||||||
def decomposition_g8_p2th_power(fct):
|
def decomposition_g8_p2th_power(fct):
|
||||||
print('decomposition_g8_p2th_power', fct)
|
|
||||||
'''Decompose fct as g8 + A^(p^2), if possible. Output: (g8, A).'''
|
'''Decompose fct as g8 + A^(p^2), if possible. Output: (g8, A).'''
|
||||||
g0, A = decomposition_g8_pth_power(fct)
|
g0, A = decomposition_g8_pth_power(fct)
|
||||||
A0, A1 = decomposition_g8_pth_power(A)
|
A0, A1 = decomposition_g8_pth_power(A)
|
||||||
|
@ -84,15 +84,13 @@ class superelliptic_drw_cech:
|
|||||||
aux.omega8.h2 = decomposition_g8_p2th_power(aux.omega8.h2)[0]
|
aux.omega8.h2 = decomposition_g8_p2th_power(aux.omega8.h2)[0]
|
||||||
aux.f += aux.omega8.h2.verschiebung()
|
aux.f += aux.omega8.h2.verschiebung()
|
||||||
aux.omega8.h2 = 0*C.x
|
aux.omega8.h2 = 0*C.x
|
||||||
print('aux.omega0.omega.cartier() - aux.f.f.pth_root().diffn() == aux.omega8.omega.cartier()', aux.omega0.omega.cartier() - aux.f.f.pth_root().diffn() == aux.omega8.omega.cartier())
|
|
||||||
aux_divided_by_p = superelliptic_cech(C, aux.omega0.omega.cartier(), aux.f.f.pth_root())
|
aux_divided_by_p = superelliptic_cech(C, aux.omega0.omega.cartier(), aux.f.f.pth_root())
|
||||||
return aux_divided_by_p
|
return aux_divided_by_p
|
||||||
|
|
||||||
def coordinates(self, basis = 0):
|
def coordinates(self, basis = 0, prec = 50):
|
||||||
C = self.curve
|
C = self.curve
|
||||||
g = C.genus()
|
g = C.genus()
|
||||||
coord_mod_p = self.r().coordinates()
|
coord_mod_p = self.r().coordinates()
|
||||||
print(coord_mod_p)
|
|
||||||
coord_lifted = [lift(a) for a in coord_mod_p]
|
coord_lifted = [lift(a) for a in coord_mod_p]
|
||||||
if basis == 0:
|
if basis == 0:
|
||||||
basis = C.crystalline_cohomology_basis()
|
basis = C.crystalline_cohomology_basis()
|
||||||
@ -106,7 +104,6 @@ class superelliptic_drw_cech:
|
|||||||
return coordinates
|
return coordinates
|
||||||
|
|
||||||
def is_regular(self):
|
def is_regular(self):
|
||||||
print(self.omega0.r().is_regular_on_U0(), self.omega8.r().is_regular_on_Uinfty(), self.omega0.frobenius().is_regular_on_U0(), self.omega8.frobenius().is_regular_on_Uinfty())
|
|
||||||
eq1 = self.omega0.r().is_regular_on_U0() and self.omega8.r().is_regular_on_Uinfty()
|
eq1 = self.omega0.r().is_regular_on_U0() and self.omega8.r().is_regular_on_Uinfty()
|
||||||
eq2 = self.omega0.frobenius().is_regular_on_U0() and self.omega8.frobenius().is_regular_on_Uinfty()
|
eq2 = self.omega0.frobenius().is_regular_on_U0() and self.omega8.frobenius().is_regular_on_Uinfty()
|
||||||
return eq1 and eq2
|
return eq1 and eq2
|
Loading…
Reference in New Issue
Block a user