56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
p = 3
|
|
m = 1
|
|
F = GF(p)
|
|
Rx.<x> = PolynomialRing(F)
|
|
f = x
|
|
C_super = superelliptic(f, m)
|
|
|
|
Rxy.<x, y> = PolynomialRing(F, 2)
|
|
f1 = superelliptic_function(C_super, x^2)
|
|
f2 = superelliptic_function(C_super, x^4)
|
|
f3 = superelliptic_function(C_super, x^5)
|
|
AS = as_cover(C_super, [f1, f2, f3], prec=1000)
|
|
print(AS)
|
|
zmag = AS.magical_element(threshold = 20)[0]
|
|
zvee = dual_elt(AS, zmag)
|
|
|
|
### DEFINE THE POLYNOMIALS
|
|
n = AS.height
|
|
variable_names = 'x, y'
|
|
for i in range(n):
|
|
variable_names += ', z' + str(i)
|
|
Rxyz = PolynomialRing(F, n+2, variable_names)
|
|
x, y = Rxyz.gens()[:2]
|
|
z = Rxyz.gens()[2:]
|
|
|
|
###############
|
|
def val_of_components(omega, zvee):
|
|
result = []
|
|
AS = omega.curve
|
|
for i in range(p^2):
|
|
omega_i = ith_magical_component(omega, zvee, i)
|
|
val = omega_i.expansion_at_infty().valuation()
|
|
val = val*p^2 + AS.exponent_of_different()
|
|
result += [val]
|
|
return result
|
|
#############
|
|
G = AS.group
|
|
|
|
g = AS.genus()
|
|
print(AS.exponent_of_different_prim())
|
|
v_x = as_function(AS, x).expansion_at_infty().valuation()
|
|
n = AS.height
|
|
v_z = [as_function(AS, z[i]).expansion_at_infty().valuation() for i in range(n)]
|
|
omega = AS.holomorphic_differentials_basis()[-16]
|
|
from itertools import product
|
|
pr = [list(range(p)) for _ in range(n)]
|
|
for i in range(0, 30):
|
|
for k in product(*pr):
|
|
v_w = i*v_x+ sum(k[i]*v_z[i] for i in range(n))
|
|
if (v_w < - AS.exponent_of_different_prim() + 10 and v_w > - AS.exponent_of_different_prim()):
|
|
w = as_function(AS, x^i * prod(z[i1]^(k[i1]) for i1 in range(n)))
|
|
result = as_form(AS, 0)
|
|
for g in G:
|
|
component = ith_magical_component(omega, zvee, g).form
|
|
result += as_form(AS, w.group_action(g).function*component)
|
|
print(result.expansion_at_infty().valuation(), w.expansion_at_infty().valuation() - zmag.expansion_at_infty().valuation()) |