print('Remember to load init.sage!') print('Define the superelliptic curve C : y^4 = x^6 + 1 over GF(5)') F = GF(5) Rx. = 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. = 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. = 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())