DeRhamComputation/as_drw/as_compability.sage

55 lines
1.9 KiB
Python

def teichmuller(self, n):
AS = self.curve
return as_witt([self] + n*[0*AS.x])
as_function.teichmuller = teichmuller
def Vd(self, n, m = 1):
'''Return V^m([f] d[x]) in W_n Omega'''
AS = self.curve
if m == 0:
return as_witt_form([self] + n*[0*AS.x], (n+1)*[0*AS.x])
return as_witt_form(m*[0*AS.x] + [self] + (n-m)*[0*AS.x], (n+1)*[0*AS.x])
as_function.Vd = Vd
def dV(self, n, m = 1):
'''Return dV^m([f] d[x]) in W_n Omega'''
AS = self.curve
return as_witt_form((n+1)*[0*AS.x], m*[0*AS.x] + [self] + (n-m)*[0*AS.x])
as_function.dV = dV
def witt_diffn(self, n):
RxyzQ, Rxyz, x, y, z = AS.fct_field
F = Rxyz.base_ring
Rx.<x> = PolynomialRing(F)
return 0
as_function.witt_diffn = witt_diffn
def auxilliary_multiplication(fct, i, form_fct, j, n):
'''Return V^i(fct)*V^j(form_fct dx) in W_n Omega'''
AS = fct.curve
p = AS.base_ring.characteristic()
if i == 0:
return as_witt_form(j*[0*AS.x] + [fct^(p^j) * form_fct] + (n-j)*[0*AS.x], (n+1)*[0*AS.x])
if j == 0:
return auxilliary_multiplication(fct, i-1, form_fct^p * AS.x^(p-1), j, n).verschiebung()
return p*auxilliary_multiplication(fct, i-1, form_fct, j-1, n).verschiebung()
def auxilliary_multiplication2(fct1, i, fct2, j, n):
'''Return V^i(fct1)*dV^j(fct2) in W_n Omega'''
AS = fct.curve
p = AS.base_ring.characteristic()
if i > 0 and j > 0:
return auxilliary_multiplication2(fct1, i, fct2, j, n).verschiebung()
if i == 0:
aux_Vs = j*[0*AS.x] * [fct2 * fct1^(p^j - 1) * fct1.diffn()/AS.dx] + (n - j)*[0*AS.x]
aux = as_witt_form(aux_Vs, (n+1)*[0*AS.x])
return as_witt_form((n+1)*[0*AS.x], j*[0*AS.x] + [fct1^(p^j) * fct2] + (n-j)*[0*AS.x]) - aux
if j == 0:
aux_Vs = j*[0*AS.x] * [fct1 * fct2^(p^j - 1) * fct2.diffn()/AS.dx] + (n - j)*[0*AS.x]
aux = as_witt_form(aux_Vs, (n+1)*[0*AS.x])
return aux