DeRhamComputation/example.sage
2023-09-23 13:33:58 +00:00

74 lines
2.6 KiB
Python

print('Remember to load init.sage!')
print('Define the superelliptic curve C : y^4 = x^6 + 1 over GF(5)')
F = GF(5)
Rx.<x> = PolynomialRing(F)
f = x^6 + 1
C = superelliptic(f, 4)
print(C)
print('Is is smooth?')
print(C.is_smooth())
print('----------------------\n')
print('Define the function x + 2y + 1 on our curve C:')
Rxy.<x, y> = PolynomialRing(F, 2)
fct1 = superelliptic_function(C, x + 2*y + 1)
fct2 = C.x + 2*C.y + C.one
print('In one way:', fct1, 'In another way:', fct2)
print('----------------------\n')
print('define the form omega = y * dx on C:')
omega1 = superelliptic_form(C, y)
omega2 = C.y * C.dx
print('In one way:', omega1, 'In another way:', omega2)
print('----------------------\n')
print('The holomorphic differentials basis of C:')
print(C.holomorphic_differentials_basis())
print('Let us compute now coordinates of some differential form.')
omega = (2*C.y^2 - C.y + C.one)/C.y^3 * C.dx
print('First method:', omega.coordinates())
basis = C.holomorphic_differentials_basis()
print('Second method (faster):', omega.coordinates(basis = basis))
print('Compute the Laurent expansion of omega, first at one place at infinity and then at the second:')
print(omega.expansion_at_infty(place = 0))
print(omega.expansion_at_infty(place = 1))
print('----------------------\n')
print('The basis of de Rham cohomology of C:')
print(C.de_rham_basis())
print('Elements of de Rham cohomology are Cech cocycles -- triples:')
eta = C.de_rham_basis()[-1]
print(eta)
print('Let us check that the cocycle condition omega_0 - omega_{\infty} = df is satisfied:')
print(eta.omega0 - eta.omega8 == eta.f.diffn())
print('----------------------\n')
#
#
F = GF(3)
Rx.<x> = PolynomialRing(F)
f = x^3 + x
C = superelliptic(f, 2)
f1 = C.x^2*C_super.y
f2 = C.x^3
AS = as_cover(C, [f1, f2], prec=1000)
print(AS)
print('----------------------\n')
print('Compute the group action of $(\mathbb Z/p)^n$ on a form:')
omega = AS.holomorphic_differentials_basis()[1]
print('Form:', omega)
print('Group action by [1, 0]:', omega.group_action([1, 0]))
print('Group action by [0, 1]:', omega.group_action([0, 1]))
print('Let us compute the matrices of the group action:')
p = 3
A, B = group_action_matrices_holo(AS)
print(A, '\n', B)
n = A.dimensions()[0]
print('Let us check that they commute and are of order p')
print(A*B == B*A)
print(A^p == identity_matrix(n))
print(B^p == identity_matrix(n))
print('We decompose it into indecomposable $(\mathbb Z/p)^2$-modules:')
print(magma_module_decomposition(A, B))
print('----------------------\n')
print('Let us look for magical elements:')
z = AS.magical_element()
print(z)
print(z.valuation())