55 lines
1.9 KiB
Python
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 |