Poprawiony i sprawdzony dy_w oraz autom.
This commit is contained in:
parent
5f82d7db59
commit
cc45757e9c
File diff suppressed because one or more lines are too long
@ -13,4 +13,4 @@ C = superelliptic(f, m)
|
||||
#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))
|
||||
p#rint(autom(b[0]).coordinates(basis = b))
|
@ -43,7 +43,7 @@ class superelliptic_witt:
|
||||
if other < 0:
|
||||
return (-other)*(-self)
|
||||
if other in QQ:
|
||||
other_integer = Integers(p^2)(other)^(-1)
|
||||
other_integer = Integers(p^2)(other)
|
||||
return other_integer*self
|
||||
|
||||
def __mul__(self, other):
|
||||
@ -67,7 +67,9 @@ class superelliptic_witt:
|
||||
def __eq__(self, other):
|
||||
return self.t == other.t and self.f == other.f
|
||||
|
||||
def diffn(self):
|
||||
def diffn(self, dy_w = 0):
|
||||
if dy_w == 0:
|
||||
dy_w = self.curve.dy_w()
|
||||
C = self.curve
|
||||
t = self.t
|
||||
f = self.f
|
||||
@ -86,9 +88,6 @@ class superelliptic_witt:
|
||||
# d([N/D] + V(f)) = [1/D]*d([N]) - [N]*[D^(-2)]*d([D]) + dV(f)
|
||||
return ((den_t_fct)^(-1)).teichmuller()*num_t_fct.teichmuller().diffn() - ((den_t_fct)^(-2)).teichmuller()*num_t_fct.teichmuller()*den_t_fct.teichmuller().diffn() + superelliptic_drw_form(0*C.x, 0*C.dx, f)
|
||||
t_polynomial = Rxy(t_polynomial)
|
||||
fC = superelliptic_function(C, fC)
|
||||
fC = fC.teichmuller()
|
||||
dy_w = 1/2* ((C.y)^(-1)).teichmuller()*auxilliary_derivative(fC)
|
||||
M = t_polynomial.monomials()[0]
|
||||
a = t_polynomial.monomial_coefficient(M)
|
||||
#[P] = [aM] + Q, where Q = ([P] - [aM])
|
||||
@ -167,7 +166,7 @@ class superelliptic_drw_form:
|
||||
H = (self.h2 - other.h2).pth_root()
|
||||
except:
|
||||
return False
|
||||
eq2 = (self.omega - other.omega).cartier() - H.diffn()
|
||||
eq2 = ((self.omega - other.omega).cartier() - H.diffn()) == 0*self.curve.dx
|
||||
if eq1 and eq2:
|
||||
return True
|
||||
return False
|
||||
@ -205,7 +204,7 @@ class superelliptic_drw_form:
|
||||
if other < 0:
|
||||
return (-other)*(-self)
|
||||
if other in QQ:
|
||||
other_integer = Integers(p^2)(other)^(-1)
|
||||
other_integer = Integers(p^2)(other)
|
||||
return other_integer*self
|
||||
t = other.t
|
||||
f = other.f
|
||||
@ -334,9 +333,6 @@ class superelliptic_drw_cech:
|
||||
aux -= coord_lifted[i]*a
|
||||
print('aux before reduce', aux)
|
||||
#aux = aux.reduce() # Now aux = p*cech class.
|
||||
h02 = aux.omega0.h2
|
||||
h82 = aux.omega8.h2
|
||||
aux -= superelliptic_drw_cech(h02.verschiebung().diffn(), (h02 - h82).verschiebung())
|
||||
# Now aux should be of the form (V(smth), V(smth), V(smth))
|
||||
print('aux V(smth)', aux)
|
||||
aux_divided_by_p = superelliptic_cech(C, aux.omega0.omega.cartier(), aux.f.f.pth_root())
|
||||
@ -345,6 +341,12 @@ class superelliptic_drw_cech:
|
||||
coord_aux_divided_by_p = [ZZ(a) for a in coord_aux_divided_by_p]
|
||||
coordinates = [ (coord_lifted[i] + p*coord_aux_divided_by_p[i])%p^2 for i in range(2*g)]
|
||||
return coordinates
|
||||
|
||||
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()
|
||||
eq2 = self.omega0.frobenius().is_regular_on_U0() and self.omega8.frobenius().is_regular_on_Uinfty()
|
||||
return eq1 and eq2
|
||||
|
||||
|
||||
def de_rham_witt_lift(cech_class, prec = 50):
|
||||
@ -354,7 +356,6 @@ def de_rham_witt_lift(cech_class, prec = 50):
|
||||
omega8 = cech_class.omega8
|
||||
fct = cech_class.f
|
||||
omega0_regular = regular_form(omega0) #Present omega0 in the form P dx + Q dy
|
||||
print(omega0_regular)
|
||||
omega0_lift = omega0_regular[0].teichmuller()*(C.x.teichmuller().diffn()) + omega0_regular[1].teichmuller()*(C.y.teichmuller().diffn())
|
||||
#Now the obvious lift of omega0 = P dx + Q dy to de Rham-Witt is [P] d[x] + [Q] d[y]
|
||||
omega8_regular = regular_form(second_patch(omega8)) # The same for omega8.
|
||||
@ -362,7 +363,6 @@ def de_rham_witt_lift(cech_class, prec = 50):
|
||||
u = (C.x)^(-1)
|
||||
v = (C.y)/(C.x)^(g+1)
|
||||
omega8_lift = omega8_regular[0].teichmuller()*(u.teichmuller().diffn()) + omega8_regular[1].teichmuller()*(v.teichmuller().diffn())
|
||||
print('omega8_lift.frobenius().expansion_at_infty()', omega8_lift.frobenius().expansion_at_infty())
|
||||
aux = omega0_lift - omega8_lift - fct.teichmuller().diffn() # now aux is of the form (V(smth) + dV(smth), V(smth))
|
||||
if aux.h1.function != 0:
|
||||
raise ValueError('Something went wrong - aux is not of the form (V(smth) + dV(smth), V(smth)).')
|
||||
@ -396,8 +396,19 @@ def autom(self):
|
||||
result = superelliptic_witt(autom(self.t), autom(self.f))
|
||||
return result
|
||||
if isinstance(self, superelliptic_drw_form):
|
||||
result = superelliptic_drw_form(autom(self.h1), autom(self.omega), autom(self.h2))
|
||||
result = superelliptic_drw_form(0*C.x, autom(self.omega), autom(self.h2))
|
||||
result += autom(self.h1).teichmuller()*(C.x + C.one).teichmuller().diffn()
|
||||
return result
|
||||
if isinstance(self, superelliptic_drw_cech):
|
||||
result = superelliptic_drw_cech(autom(self.omega0), autom(self.f))
|
||||
return result
|
||||
return result
|
||||
|
||||
|
||||
def dy_w(C):
|
||||
'''Return d[y].'''
|
||||
fC = C.polynomial
|
||||
fC = superelliptic_function(C, fC)
|
||||
fC = fC.teichmuller()
|
||||
dy_w = 1/2* ((C.y)^(-1)).teichmuller()*auxilliary_derivative(fC)
|
||||
return dy_w
|
||||
superelliptic.dy_w = dy_w
|
@ -56,4 +56,11 @@ def decomposition_omega0_omega8(omega, prec=50):
|
||||
#Rx.<x> = PolynomialRing(F)
|
||||
#aux_fct = (g0.form)*y
|
||||
else:
|
||||
raise ValueError("Something went wrong for "+str(omega) +". Result would be "+str(g0)+ " and " + str(g8))
|
||||
raise ValueError("Something went wrong for "+str(omega) +". Result would be "+str(g0)+ " and " + str(g8))
|
||||
|
||||
|
||||
def decomposition_g0_g8_pth_power(fct):
|
||||
'''Decompose fct as g0 - g8 + A^p, if possible. Output: (g0, g8, A).'''
|
||||
coor = fct.coordinates()
|
||||
C = fct.curve
|
||||
return 0
|
Loading…
Reference in New Issue
Block a user