36 lines
1.9 KiB
Python
36 lines
1.9 KiB
Python
|
def de_rham_witt_lift(cech_class, prec = 50):
|
||
|
C = cech_class.curve
|
||
|
g = C.genus()
|
||
|
omega0 = cech_class.omega0
|
||
|
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_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]
|
||
|
print('omega8', omega8, 'second_patch(omega8)', second_patch(omega8))
|
||
|
omega8_regular = regular_form(second_patch(omega8)) # The same for omega8.
|
||
|
print('omega8_regular 1', omega8_regular)
|
||
|
omega8_regular = (second_patch(omega8_regular[0]), second_patch(omega8_regular[1]))
|
||
|
print('omega8_regular 2', omega8_regular)
|
||
|
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())
|
||
|
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:
|
||
|
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.
|
||
|
aux_h2 = decom_aux_h2[0]
|
||
|
aux_f = decom_aux_h2[2]
|
||
|
aux_omega0 = decomposition_omega0_omega8(aux.omega, prec=prec)[0]
|
||
|
result = superelliptic_drw_cech(omega0_lift - aux_h2.verschiebung().diffn() - aux_omega0.verschiebung(), fct.teichmuller() + aux_f.verschiebung())
|
||
|
return result.reduce()
|
||
|
|
||
|
def crystalline_cohomology_basis(self, prec = 50):
|
||
|
result = []
|
||
|
for a in self.de_rham_basis():
|
||
|
result += [de_rham_witt_lift(a, prec = prec)]
|
||
|
return result
|
||
|
|
||
|
superelliptic.crystalline_cohomology_basis = crystalline_cohomology_basis
|