nie dziala ani de rham, ani crystalline
This commit is contained in:
parent
64314f8011
commit
3ded25e39d
@ -13,8 +13,9 @@ class as_cech:
|
||||
self.omega0 = omega
|
||||
self.f = f
|
||||
self.omega8 = self.omega0 - self.f.diffn()
|
||||
if self.omega0.form not in Rxyz or self.omega8.valuation() < 0:
|
||||
raise ValueError('cech cocycle not regular')
|
||||
print(self.omega0.form, self.omega8.valuation())
|
||||
#if self.omega0.form not in Rxyz or self.omega8.valuation() < 0:
|
||||
# raise ValueError('cech cocycle not regular')
|
||||
|
||||
def __repr__(self):
|
||||
return "( " + str(self.omega0)+", " + str(self.f) + " )"
|
||||
|
@ -45,6 +45,11 @@ class superelliptic_form:
|
||||
return superelliptic_form(C, other*omega)
|
||||
return superelliptic_form(C, other.function*omega)
|
||||
|
||||
def __truediv__(self, other):
|
||||
''' f dx/g dx = f/g'''
|
||||
C = self.curve
|
||||
return superelliptic_function(C, self.form/other.form)
|
||||
|
||||
def cartier(self):
|
||||
'''Computes Cartier operator on the form. Idea: y^m = f(x) -> y^(p^r - 1) = f(x)^M, where r = ord_p(m),
|
||||
M = (p^r - 1)/m. Thus h(x)/y^j dx = h(x) f(x)^(M*j)/y^(p^r * j) dx. Thus C(h(x)/y^j dx) = 1/y^(p^(r-1)*j) C(h(x) f(x)^(M*j) dx).'''
|
||||
@ -86,6 +91,7 @@ class superelliptic_form:
|
||||
return -result
|
||||
|
||||
def coordinates(self, basis = 0):
|
||||
print('start', self)
|
||||
"""Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo."""
|
||||
C = self.curve
|
||||
if basis == 0:
|
||||
@ -96,6 +102,7 @@ class superelliptic_form:
|
||||
denom = LCM([denominator(omega.form) for omega in basis])
|
||||
basis = [denom*omega.form for omega in basis]
|
||||
self_with_no_denominator = denom*self.form
|
||||
print('stop', self_with_no_denominator)
|
||||
return linear_representation_polynomials(Rxy(self_with_no_denominator), [Rxy(omega) for omega in basis])
|
||||
|
||||
def jth_component(self, j):
|
||||
|
@ -18,14 +18,29 @@ def decomposition_g0_p2th_power(fct):
|
||||
return (g0 + A0^p, A1)
|
||||
|
||||
def decomposition_omega0_hpdh(omega):
|
||||
'''Decompose omega = (regular on U0) + h^(p-1) dh, so that Cartier(omega) = (regular on U0) + dh.
|
||||
'''Decompose omega = (regular on U0) + h^(p-1) dh + d(smth), so that Cartier(omega) = (regular on U0) + dh.
|
||||
Result: (regular on U0, h)'''
|
||||
print('decomp!!', omega)
|
||||
C = omega.curve
|
||||
F = C.base_ring
|
||||
p = F.characteristic()
|
||||
if omega.is_regular_on_U0():
|
||||
return (omega, 0*C.x)
|
||||
omega1 = omega.cartier().cartier()
|
||||
omega1 = omega1.inv_cartier().inv_cartier()
|
||||
print('do scalkowania', omega.cartier() - omega1.cartier())
|
||||
fct = (omega.cartier() - omega1.cartier()).integral()
|
||||
#dfct = omega.cartier() - omega1.cartier() #this is dh
|
||||
#print('dfct.cartier = 0?', dfct.cartier())
|
||||
#omegas_by_dh = (omega - omega1)/dfct
|
||||
#d_omegas_by_dh = omegas_by_dh.diffn()
|
||||
#fct = - (omega - omega1)/d_omegas_by_dh
|
||||
|
||||
#fct = (omega.cartier() - omega1.cartier()).integral()
|
||||
#h = (omega - omega0)/(d((omega - omega0)/dh))
|
||||
|
||||
print('decomposition_omega0_hpdh', omega, omega1, fct)
|
||||
print('??', omega.verschiebung() == omega1.verschiebung())
|
||||
return (omega1, fct)
|
||||
|
||||
def decomposition_omega8_hpdh(omega, prec = 50):
|
||||
@ -36,7 +51,6 @@ def decomposition_omega8_hpdh(omega, prec = 50):
|
||||
Fxy, Rxy, x, y = C.fct_field
|
||||
F = C.base_ring
|
||||
p = C.characteristic
|
||||
C = omega.curve
|
||||
if omega.is_regular_on_Uinfty():
|
||||
return (omega, 0*C.x)
|
||||
Rt.<t> = LaurentSeriesRing(F)
|
||||
@ -54,6 +68,7 @@ def decomposition_g8_pth_power(fct, prec = 50):
|
||||
'''Decompose fct as g8 + A^p, if possible. Output: (g8, A).'''
|
||||
C = fct.curve
|
||||
F = C.base_ring
|
||||
p = F.characteristic()
|
||||
Rt.<t> = LaurentSeriesRing(F)
|
||||
Fxy, Rxy, x, y = C.fct_field
|
||||
if fct.expansion_at_infty().valuation() >= 0:
|
||||
@ -69,6 +84,9 @@ def decomposition_g8_pth_power(fct, prec = 50):
|
||||
|
||||
def decomposition_g8_p2th_power(fct):
|
||||
'''Decompose fct as g8 + A^(p^2), if possible. Output: (g8, A).'''
|
||||
C = fct.curve
|
||||
F = C.base_ring
|
||||
p = F.characteristic()
|
||||
g0, A = decomposition_g8_pth_power(fct)
|
||||
A0, A1 = decomposition_g8_pth_power(A)
|
||||
return (g0 + A0^p, A1)
|
@ -66,6 +66,8 @@ class superelliptic_drw_cech:
|
||||
if info: print("Computing " + str(self) + " divided by p.")
|
||||
#
|
||||
C = self.curve
|
||||
F = C.base_ring
|
||||
p = F.characteristic()
|
||||
aux = self
|
||||
Fxy, Rxy, x, y = C.fct_field
|
||||
aux_f_t_0 = decomposition_g0_g8(aux.f.t, prec=50)[0]
|
||||
@ -80,7 +82,7 @@ class superelliptic_drw_cech:
|
||||
# We replace omega by regular on U0
|
||||
omega = aux.omega0.omega
|
||||
aux.omega0.omega, fct = decomposition_omega0_hpdh(aux.omega0.omega)
|
||||
aux.omega0.h2 += fct^p
|
||||
#aux.omega0.h2 += fct^p #WRONG I think
|
||||
#
|
||||
if info: print("Computed decomposition_omega0_hpdh of self.omega0.omega.")
|
||||
#
|
||||
@ -107,6 +109,8 @@ class superelliptic_drw_cech:
|
||||
def coordinates(self, basis = 0, prec = 50, info = 0):
|
||||
if info: print("Computing coordinates of " + str(self))
|
||||
C = self.curve
|
||||
F = C.base_ring
|
||||
p = F.characteristic()
|
||||
g = C.genus()
|
||||
coord_mod_p = self.r().coordinates()
|
||||
if info: print("Computed coordinates mod p.")
|
||||
@ -116,7 +120,10 @@ class superelliptic_drw_cech:
|
||||
aux = self
|
||||
for i, a in enumerate(basis):
|
||||
aux -= coord_lifted[i]*a
|
||||
print("aux!!!", aux)
|
||||
aux_divided_by_p = aux.div_by_p(info = info)
|
||||
print("aux by p!!!", aux_divided_by_p)
|
||||
print("check", mult_by_p(aux_divided_by_p)-aux)
|
||||
coord_aux_divided_by_p = aux_divided_by_p.coordinates()
|
||||
if info: print("Computed coordinates mod p of (self - lift)/p.")
|
||||
coord_aux_divided_by_p = [ZZ(a) for a in coord_aux_divided_by_p]
|
||||
|
@ -1,6 +1,6 @@
|
||||
class superelliptic_drw_form:
|
||||
def __init__(self, h1, omega, h2):
|
||||
'''Form [h1] d[x] + V(omega) + dV([h])'''
|
||||
'''Form [h1] d[x] + V(omega) + dV([h2])'''
|
||||
self.curve = h1.curve
|
||||
self.h1 = h1
|
||||
self.omega = omega
|
||||
|
@ -26,6 +26,8 @@ class superelliptic_witt:
|
||||
second_coor = 0*C.x
|
||||
X = self.t
|
||||
Y = other.t
|
||||
F = C.base_ring
|
||||
p = F.characteristic()
|
||||
for i in range(1, p):
|
||||
second_coor -= binomial_prim(p, i)*X^i*Y^(p-i)
|
||||
return superelliptic_witt(self.t + other.t, self.f + other.f + second_coor)
|
||||
@ -149,13 +151,22 @@ def auxilliary_derivative(P):
|
||||
|
||||
|
||||
|
||||
def mult_by_p(omega):
|
||||
C = omega.curve
|
||||
fct = omega.form
|
||||
Fxy, Rxy, x, y = C.fct_field
|
||||
omega = superelliptic_form(C, fct^p * x^(p-1))
|
||||
result = superelliptic_drw_form(0*C.x, omega, 0*C.x)
|
||||
return result
|
||||
def mult_by_p(elt):
|
||||
C = elt.curve
|
||||
F = C.base_ring
|
||||
p = F.characteristic()
|
||||
if isinstance(elt, superelliptic_form):
|
||||
fct = elt.form
|
||||
Fxy, Rxy, x, y = C.fct_field
|
||||
omega = superelliptic_form(C, fct^p * x^(p-1))
|
||||
result = superelliptic_drw_form(0*C.x, elt, 0*C.x)
|
||||
return result
|
||||
if isinstance(elt, superelliptic_function):
|
||||
return superelliptic_witt(0*C.x, elt^p)
|
||||
if isinstance(elt, superelliptic_cech):
|
||||
om0 = elt.omega0
|
||||
f = elt.f
|
||||
return superelliptic_drw_cech(mult_by_p(om0), mult_by_p(f))
|
||||
|
||||
def verschiebung(elt):
|
||||
C = elt.curve
|
||||
|
Loading…
Reference in New Issue
Block a user