first version of template works
This commit is contained in:
parent
6fe120b690
commit
bd1ecfbfae
@ -1,21 +1,18 @@
|
|||||||
class as_cover:
|
class as_cover:
|
||||||
def __init__(self, C, list_of_fcts, branch_points = [], prec = 10):
|
def __init__(self, C, cover_template, list_of_fcts, branch_points = [], prec = 10):
|
||||||
self.quotient = C
|
self.quotient = C
|
||||||
self.functions = list_of_fcts
|
self.functions = list_of_fcts
|
||||||
|
print('a')
|
||||||
self.height = len(list_of_fcts)
|
self.height = len(list_of_fcts)
|
||||||
|
print('b')
|
||||||
F = C.base_ring
|
F = C.base_ring
|
||||||
self.base_ring = F
|
self.base_ring = F
|
||||||
p = C.characteristic
|
p = C.characteristic
|
||||||
self.characteristic = p
|
self.characteristic = p
|
||||||
self.prec = prec
|
self.prec = prec
|
||||||
#group acting
|
#group acting
|
||||||
n = self.height
|
self.height = cover_template.height
|
||||||
from itertools import product
|
self.group = cover_template.group
|
||||||
pr = [list(GF(p)) for _ in range(n)]
|
|
||||||
group = []
|
|
||||||
for a in product(*pr):
|
|
||||||
group += [a]
|
|
||||||
self.group = group
|
|
||||||
#########
|
#########
|
||||||
f = C.polynomial
|
f = C.polynomial
|
||||||
m = C.exponent
|
m = C.exponent
|
||||||
@ -25,7 +22,7 @@ class as_cover:
|
|||||||
self.branch_points = list(range(delta)) + branch_points
|
self.branch_points = list(range(delta)) + branch_points
|
||||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||||
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
||||||
|
Rzf, zgen, fgen = cover_template.fct_field
|
||||||
all_x_series = {}
|
all_x_series = {}
|
||||||
all_y_series = {}
|
all_y_series = {}
|
||||||
all_z_series = {}
|
all_z_series = {}
|
||||||
@ -40,7 +37,13 @@ class as_cover:
|
|||||||
n = len(list_of_fcts)
|
n = len(list_of_fcts)
|
||||||
list_of_power_series = [g.expansion(pt=pt, prec=prec) for g in list_of_fcts]
|
list_of_power_series = [g.expansion(pt=pt, prec=prec) for g in list_of_fcts]
|
||||||
for j in range(n):
|
for j in range(n):
|
||||||
power_series = list_of_power_series[j]
|
####
|
||||||
|
#TUTAJ WSTAWIĆ ZMIANĘ
|
||||||
|
print(cover_template.fcts[j], {zgen[i] : z_series[i] for i in range(j)} | {zgen[i] : 0 for i in range(j, n)} | {fgen[i] : list_of_power_series[i] for i in range(n)})
|
||||||
|
power_series = Rzf(cover_template.fcts[j]).subs({zgen[i] : z_series[i] for i in range(j)} | {zgen[i] : 0 for i in range(j, n)} | {fgen[i] : list_of_power_series[i] for i in range(n)})
|
||||||
|
|
||||||
|
####
|
||||||
|
#power_series = list_of_power_series[j]
|
||||||
jump, correction, t_old, z = artin_schreier_transform(power_series, prec = prec)
|
jump, correction, t_old, z = artin_schreier_transform(power_series, prec = prec)
|
||||||
x_series = x_series(t = t_old)
|
x_series = x_series(t = t_old)
|
||||||
y_series = y_series(t = t_old)
|
y_series = y_series(t = t_old)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
class group:
|
class group:
|
||||||
def __init__(self, name, elts, one, mult, inv, gens, as_gens):
|
def __init__(self, name, elts, one, mult, inv, gens):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.elts = elts
|
self.elts = elts
|
||||||
self.one = one
|
self.one = one
|
||||||
@ -7,7 +7,6 @@ class group:
|
|||||||
self.inv = inv
|
self.inv = inv
|
||||||
self.order = len(self.elts)
|
self.order = len(self.elts)
|
||||||
self.gens = gens
|
self.gens = gens
|
||||||
self.as_gens = as_gens
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return self.name
|
return self.name
|
||||||
@ -25,7 +24,6 @@ class group_elt:
|
|||||||
def __init__(self, as_tuple, group):
|
def __init__(self, as_tuple, group):
|
||||||
self.group = group
|
self.group = group
|
||||||
self.as_tuple = as_tuple
|
self.as_tuple = as_tuple
|
||||||
self.as_gens = self.group.as_gens(as_tuple)
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return str(self.as_tuple)
|
return str(self.as_tuple)
|
||||||
@ -62,8 +60,7 @@ def cyclic_gp(p, n):
|
|||||||
mult = lambda i1, i2: (i1 + i2) % (p ** n)
|
mult = lambda i1, i2: (i1 + i2) % (p ** n)
|
||||||
inv = lambda i: (-i) % (p ** n)
|
inv = lambda i: (-i) % (p ** n)
|
||||||
gens = [1]
|
gens = [1]
|
||||||
as_gens = lambda i : [[0, i]]
|
gp = group(name, elts, one, mult, inv, gens)
|
||||||
gp = group(name, elts, one, mult, inv, gens, as_gens)
|
|
||||||
return gp
|
return gp
|
||||||
|
|
||||||
def elementary_gp(p, n):
|
def elementary_gp(p, n):
|
||||||
@ -81,8 +78,7 @@ def elementary_gp(p, n):
|
|||||||
e = n*[0]
|
e = n*[0]
|
||||||
e[i] = 1
|
e[i] = 1
|
||||||
gens += [tuple(e)]
|
gens += [tuple(e)]
|
||||||
as_gens = lambda i : [[j, i[j]] for j in range(n)]
|
gp = group(name, elts, one, mult, inv, gens)
|
||||||
gp = group(name, elts, one, mult, inv, gens, as_gens)
|
|
||||||
return gp
|
return gp
|
||||||
|
|
||||||
|
|
||||||
@ -91,9 +87,8 @@ def heisenberg(p):
|
|||||||
name = "Heisenberg group E(" + str(p) + "^3)"
|
name = "Heisenberg group E(" + str(p) + "^3)"
|
||||||
elts = [(i, j, k) for i in range(p) for j in range(p) for k in range(p)]
|
elts = [(i, j, k) for i in range(p) for j in range(p) for k in range(p)]
|
||||||
one = 0
|
one = 0
|
||||||
mult = lambda elt1, elt2 : ((elt1[0] + elt2[0])%p, (elt1[1] + elt2[1])%p, (-elt1[0]*elt2[1] + elt1[2] + elt2[2])%p)
|
mult = lambda elt1, elt2 : ((elt1[0] + elt2[0])%p, (elt1[1] + elt2[1])%p, (-elt1[1]*elt2[0] + elt1[2] + elt2[2])%p)
|
||||||
inv = lambda elt : (p-elt[0], p-elt[1], (p - elt[2] - (p-elt[0])*(p-elt[1]))%p)
|
inv = lambda elt : (p-elt[0], p-elt[1], (p - elt[2] - (p-elt[0])*(p-elt[1]))%p)
|
||||||
gens = [(1, 0, 0), (0, 1, 0), (0, 0, 1)]
|
gens = [(1, 0, 0), (0, 1, 0), (0, 0, 1)]
|
||||||
as_gens = lambda elt : [[0, elt[0]], [1, elt[1]], [2, elt[2]]]
|
gp = group(name, elts, one, mult, inv, gens)
|
||||||
gp = group(name, elts, one, mult, inv, gens, as_gens)
|
|
||||||
return gp
|
return gp
|
@ -3,7 +3,6 @@ class template:
|
|||||||
def __init__(self, height, field, group, fcts, gp_action):
|
def __init__(self, height, field, group, fcts, gp_action):
|
||||||
self.height = height
|
self.height = height
|
||||||
self.group = group
|
self.group = group
|
||||||
self.fcts = fcts #RHSs of the Artin-Schreier equations
|
|
||||||
self.gp_action = gp_action #action of the generators of the group on z[i]'s
|
self.gp_action = gp_action #action of the generators of the group on z[i]'s
|
||||||
self.field = field
|
self.field = field
|
||||||
n = height
|
n = height
|
||||||
@ -14,9 +13,11 @@ class template:
|
|||||||
variable_names += 'f'+str(i)
|
variable_names += 'f'+str(i)
|
||||||
if i!=n-1:
|
if i!=n-1:
|
||||||
variable_names += ','
|
variable_names += ','
|
||||||
R = PolynomialRing(field, 2*n, variable_names)
|
Rzf = PolynomialRing(field, 2*n, variable_names)
|
||||||
z = R.gens()[:n]
|
z = Rzf.gens()[:n]
|
||||||
f = R.gens()[n:]
|
f = Rzf.gens()[n:]
|
||||||
|
self.fct_field = Rzf, z, f
|
||||||
|
self.fcts = [Rzf(ff) for ff in fcts] #RHSs of the Artin-Schreier equations
|
||||||
|
|
||||||
def elementary_template(p, n):
|
def elementary_template(p, n):
|
||||||
group = elementary_gp(p, n)
|
group = elementary_gp(p, n)
|
||||||
@ -34,4 +35,24 @@ def elementary_template(p, n):
|
|||||||
height = n
|
height = n
|
||||||
fcts = [f[i] for i in range(n)]
|
fcts = [f[i] for i in range(n)]
|
||||||
gp_action = [[z[j] + (i == j) for j in range(n)] for i in range(n)]
|
gp_action = [[z[j] + (i == j) for j in range(n)] for i in range(n)]
|
||||||
|
return template(height, field, group, fcts, gp_action)
|
||||||
|
|
||||||
|
def heisenberg_template(p):
|
||||||
|
group = heisenberg(p)
|
||||||
|
field = GF(p)
|
||||||
|
variable_names = ''
|
||||||
|
n = 3
|
||||||
|
for i in range(n):
|
||||||
|
variable_names += 'z'+str(i)+','
|
||||||
|
for i in range(n):
|
||||||
|
variable_names += 'f'+str(i)
|
||||||
|
if i!=n-1:
|
||||||
|
variable_names += ','
|
||||||
|
R = PolynomialRing(field, 2*n, variable_names)
|
||||||
|
z = R.gens()[:n]
|
||||||
|
f = R.gens()[n:]
|
||||||
|
height = n
|
||||||
|
fcts = [f[i] for i in range(n)]
|
||||||
|
fcts[2] += (z[0] - z[1])*f[1]
|
||||||
|
gp_action = [[z[0] + 1, z[1], z[2] + z[1]], [z[0] + 1, z[1] + 1, z[2]], [z[0], z[1], z[2] - 1]]
|
||||||
return template(height, field, group, fcts, gp_action)
|
return template(height, field, group, fcts, gp_action)
|
@ -3,6 +3,8 @@ load('superelliptic/superelliptic_function_class.sage')
|
|||||||
load('superelliptic/superelliptic_form_class.sage')
|
load('superelliptic/superelliptic_form_class.sage')
|
||||||
load('superelliptic/superelliptic_cech_class.sage')
|
load('superelliptic/superelliptic_cech_class.sage')
|
||||||
load('superelliptic/frobenius_kernel.sage')
|
load('superelliptic/frobenius_kernel.sage')
|
||||||
|
load('as_covers/group.sage')
|
||||||
|
load('as_covers/template.sage')
|
||||||
load('as_covers/as_transform.sage')
|
load('as_covers/as_transform.sage')
|
||||||
load('as_covers/holomorphic_combinations.sage')
|
load('as_covers/holomorphic_combinations.sage')
|
||||||
load('as_covers/as_cover_class.sage')
|
load('as_covers/as_cover_class.sage')
|
||||||
|
Loading…
Reference in New Issue
Block a user