quasiuniformizer works

This commit is contained in:
jgarnek 2024-06-12 16:13:49 +00:00
parent 4a07181dad
commit 3d0e352a37
4 changed files with 58 additions and 23 deletions

View File

@ -268,13 +268,39 @@ class as_cover:
n = self.height
F = self.base_ring
list_of_fcts = self.at_most_poles(threshold)
list_of_fcts2 = self.z + [self.x, self.y]
for f1 in list_of_fcts:
for f2 in list_of_fcts:
for f2 in list_of_fcts2:
d, a, b = xgcd(f1.valuation(place), f2.valuation(place))
if d == 1:
return f1^a*f2^b
raise ValueError("Increase threshold.")
def quasiuniformizer(self, place = 0, threshold = 10):
'''Return an element with valuation coprime to p.'''
p = self.characteristic
n = self.height
F = self.base_ring
rr_space = self.at_most_poles(threshold)
list_of_fcts = [ff for ff in rr_space if ff.valuation(place)%p != 0]
print(len(list_of_fcts))
list_of_fcts2 = [len(str(ff)) for ff in list_of_fcts]
i_min = list_of_fcts2.index(min(list_of_fcts2))
result = list_of_fcts.pop(i_min)
print(result)
flag = 1
while flag == 1:
flag = 0
for g in self.group.elts:
if result.group_action(g) == result and g != self.group.one:
flag = 1
if flag == 1:
list_of_fcts2 = [len(str(ff)) for ff in list_of_fcts]
i_min = list_of_fcts2.index(min(list_of_fcts2))
result = list_of_fcts.pop(i_min)
print(result)
return result
def stabilizer(self, place = 0):
result = []
for g in self.group.elts:
@ -304,44 +330,51 @@ class as_cover:
result += [g]
return result
def ith_ramification_gp(self, i, place = 0, uniformizer = 0):
def ith_ramification_gp(self, i, place = 0, quasiuniformizer = 0, threshold = 20):
'''Find ith ramification group at place at infty of nb place.'''
G = self.group.elts
if uniformizer == 0:
t = self.uniformizer(place)
p = self.characteristic
Gi = [G[0]]
# list_of_fcts = self.z #[self.one/zz for zz in AS.z if zz.valuation(place) < 0]
# list_of_fcts += [zz^2 for zz in self.z]
if isinstance(quasiuniformizer, int) or isinstance(quasiuniformizer, Integer):
t = self.quasiuniformizer(place, threshold=threshold)
else:
t = quasiuniformizer
for g in G:
if g != G[0]:
tg = t.group_action(g)
v = (tg - t).valuation(place)
if v >= i+1:
if v >= i + t.valuation(place):
Gi += [g]
return Gi
def ramification_jumps(self, place = 0, uniformizer = 0):
def ramification_jumps(self, place = 0, quasiuniformizer = 0, threshold = 20):
'''Return list of lower ramification jumps at at place at infty of nb place.'''
G = self.stabilizer(place=place)
ramification_jps = []
p = self.characteristic
Gi = [G[0]]
# list_of_fcts = self.z #[self.one/zz for zz in AS.z if zz.valuation(place) < 0]
# list_of_fcts += [zz^2 for zz in self.z]
if isinstance(quasiuniformizer, int) or isinstance(quasiuniformizer, Integer):
t = self.quasiuniformizer(place, threshold=threshold)
else:
t = quasiuniformizer
result = []
i = 0
if uniformizer == 0:
t = self.uniformizer(place)
while len(G) > 1:
print(G, i)
Gi = [G[0]]
for g in G:
print('g', g, type(g))
if g != G[0]:
tg = t.group_action(g)
print('tg')
v = (tg - t).valuation(place)
print('v')
if v >= i+1:
if v >= i + t.valuation(place):
Gi += [g]
if len(Gi) < len(G):
ramification_jps += [i-1]
result += [i-1]
G = Gi
i+=1
return ramification_jps
return result
def a_number(self):
g = self.genus()

View File

@ -18,7 +18,9 @@ class as_function:
aux = aux.numerator()
aux = as_function(AS, aux)
aux = aux.expansion_at_infty()
if aux.valuation() >= 1:
F = AS.base_ring
Rt.<t> = LaurentSeriesRing(F, default_prec=AS.prec)
if Rt(aux).valuation() >= 1:
return True
return False

View File

@ -88,7 +88,7 @@ def heisenberg(p):
name = "Heisenberg group E(" + str(p) + "^3)"
short_name = "E(p^3)"
elts = [(i, j, k) for i in range(p) for j in range(p) for k in range(p)]
one = 0
one = elts[0]
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)
gens = [(1, 0, 0), (0, 1, 0), (0, 0, 1)]

View File

@ -31,10 +31,10 @@ load('auxilliaries/reverse.sage')
load('auxilliaries/hensel.sage')
load('auxilliaries/linear_combination_polynomials.sage')
load('auxilliaries/laurent_analytic_part.sage')
load('as_drw/witt_polynomials.sage')
load('as_drw/as_witt.sage')
load('as_drw/as_witt_form.sage')
load('as_drw/as_compability.sage')
#load('as_drw/witt_polynomials.sage')
#load('as_drw/as_witt.sage')
#load('as_drw/as_witt_form.sage')
#load('as_drw/as_compability.sage')
load('quaternion_covers/quaternion_covers.sage')
load('quaternion_covers/quaternion_function_class.sage')
load('quaternion_covers/quaternion_form_class.sage')