template - matrix for dR works
This commit is contained in:
parent
0300d463ed
commit
1818e1a301
@ -52,6 +52,7 @@ class as_cech:
|
||||
|
||||
def coordinates(self, threshold=10, basis = 0):
|
||||
'''Find coordinates of self in the de Rham cohomology basis. Threshold is an argument passed to AS.de_rham_basis().'''
|
||||
print(self, 'H1dR(X)', self.omega8.valuation())
|
||||
AS = self.curve
|
||||
C = AS.quotient
|
||||
m = C.exponent
|
||||
@ -94,8 +95,10 @@ class as_cech:
|
||||
for a in F:
|
||||
if (self.f.function - a*g.function in Rxyz):
|
||||
self.f.function = self.f.function - a*g.function
|
||||
print(g, self.omega8.valuation())
|
||||
return vector(coh_coordinates)+vector(self.coordinates(threshold=threshold, basis = basis))
|
||||
else:
|
||||
print('else', self.omega8.valuation())
|
||||
self.omega0 -= self.f.diffn()
|
||||
return vector(coh_coordinates) + vector(list(self.omega0.coordinates(basis=holo_diffs))+AS.genus()*[0])
|
||||
|
||||
|
@ -3,9 +3,7 @@ class as_cover:
|
||||
self.quotient = C
|
||||
self.cover_template = cover_template
|
||||
self.functions = list_of_fcts
|
||||
print('a')
|
||||
self.height = len(list_of_fcts)
|
||||
print('b')
|
||||
F = C.base_ring
|
||||
self.base_ring = F
|
||||
p = C.characteristic
|
||||
@ -40,7 +38,6 @@ class as_cover:
|
||||
for j in range(n):
|
||||
####
|
||||
#
|
||||
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)})
|
||||
####
|
||||
jump, correction, t_old, z = artin_schreier_transform(power_series, prec = prec)
|
||||
@ -100,7 +97,7 @@ class as_cover:
|
||||
def __repr__(self):
|
||||
n = self.height
|
||||
p = self.characteristic
|
||||
result = str(self.group)
|
||||
result = "("+self.group.short_name+")"
|
||||
result += "-cover of " + str(self.quotient)+" with the equations: \n"
|
||||
for i in range(n):
|
||||
result += 'z'+str(i)+'^p - z'+str(i) + ' = '
|
||||
|
@ -80,8 +80,9 @@ class as_form:
|
||||
|
||||
def coordinates(self, basis = 0):
|
||||
"""Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo."""
|
||||
print(self)
|
||||
print(self, 'H0(OmegaX)', self.valuation())
|
||||
self = self.reduce()
|
||||
print(self, self.valuation(), 'after reduce')
|
||||
C = self.curve
|
||||
if basis == 0:
|
||||
basis = C.holomorphic_differentials_basis()
|
||||
|
@ -122,7 +122,6 @@ class as_function:
|
||||
else: # ... or an integer.
|
||||
range_limit = elt
|
||||
for j in range(range_limit):
|
||||
print(G.gens[i])
|
||||
result = result.group_action(G.gens[i])
|
||||
return result
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
def as_reduction(AS, fct):
|
||||
'''Simplify rational function fct as a function in the function field of AS, so that z[i] appear in powers <p and only in numerator'''
|
||||
print(fct, fct.parent())
|
||||
n = AS.height
|
||||
F = AS.base_ring
|
||||
RxyzQ, Rxyz, x, y, z = AS.fct_field
|
||||
@ -25,7 +24,7 @@ def as_reduction(AS, fct):
|
||||
if d_div != n*[0]:
|
||||
change = 1
|
||||
d_rem = [a.degree(z[i])%p for i in range(n)]
|
||||
monomial = fct1.monomial_coefficient(a)*x^(a.degree(x))*y^(a.degree(y))*prod(z[i]^(d_rem[i]) for i in range(n))*prod((AS.rhs[i])^(d_div[i]) for i in range(n))
|
||||
monomial = fct1.monomial_coefficient(a)*x^(a.degree(x))*y^(a.degree(y))*prod(z[i]^(d_rem[i]) for i in range(n))*prod((z[i]+AS.rhs[i])^(d_div[i]) for i in range(n))
|
||||
result += RxyzQ(monomial)
|
||||
|
||||
if change == 0:
|
||||
|
@ -1,5 +1,5 @@
|
||||
class group:
|
||||
def __init__(self, name, elts, one, mult, inv, gens):
|
||||
def __init__(self, name, short_name, elts, one, mult, inv, gens):
|
||||
self.name = name
|
||||
self.elts = elts
|
||||
self.one = one
|
||||
@ -7,6 +7,7 @@ class group:
|
||||
self.inv = inv
|
||||
self.order = len(self.elts)
|
||||
self.gens = gens
|
||||
self.short_name = short_name
|
||||
|
||||
def __repr__(self):
|
||||
return self.name
|
||||
@ -55,16 +56,18 @@ class group_elt:
|
||||
|
||||
def cyclic_gp(p, n):
|
||||
name = "cyclic group of order " + str(p) + "^" + str(n)
|
||||
short_name = "Z/p^n"
|
||||
elts = [i for i in range(p^n)]
|
||||
one = 0
|
||||
mult = lambda i1, i2: (i1 + i2) % (p ** n)
|
||||
inv = lambda i: (-i) % (p ** n)
|
||||
gens = [1]
|
||||
gp = group(name, elts, one, mult, inv, gens)
|
||||
gp = group(name, short_name, elts, one, mult, inv, gens)
|
||||
return gp
|
||||
|
||||
def elementary_gp(p, n):
|
||||
name = "(Z/" + str(p) + ")" + "^" + str(n)
|
||||
short_name = name
|
||||
pr = [list(GF(p)) for _ in range(n)]
|
||||
from itertools import product
|
||||
elts = []
|
||||
@ -78,17 +81,16 @@ def elementary_gp(p, n):
|
||||
e = n*[0]
|
||||
e[i] = 1
|
||||
gens += [tuple(e)]
|
||||
gp = group(name, elts, one, mult, inv, gens)
|
||||
gp = group(name, short_name, elts, one, mult, inv, gens)
|
||||
return gp
|
||||
|
||||
|
||||
|
||||
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
|
||||
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)]
|
||||
gp = group(name, elts, one, mult, inv, gens)
|
||||
gp = group(name, short_name, elts, one, mult, inv, gens)
|
||||
return gp
|
@ -4,7 +4,11 @@ def as_group_action_matrices(F, space, list_of_group_elements, basis):
|
||||
A = [matrix(F, d, d) for i in range(n)]
|
||||
for i, g in enumerate(list_of_group_elements):
|
||||
for j, omega in enumerate(space):
|
||||
if isinstance(omega, as_cech):
|
||||
print('A:', omega.omega8.valuation(), omega)
|
||||
omega1 = omega.group_action(g)
|
||||
if isinstance(omega, as_cech):
|
||||
print('B:', omega1.omega8.valuation(), omega1)
|
||||
v1 = omega1.coordinates(basis = basis)
|
||||
A[i][:, j] = vector(v1)
|
||||
return A
|
@ -129,7 +129,7 @@ def witt_template(p, n):
|
||||
rhs += [rhs_aux]
|
||||
gp_action_aux = aux.subs({Xpn[ii] : z[ii] for ii in range(i+1)}|{Ypn[ii] : ii == 0 for ii in range(i+1)})
|
||||
gp_action += [gp_action_aux]
|
||||
fcts = [rhs[i] - z[i]^p + z[i] + f[i] for i in range(n)]
|
||||
fcts = [-rhs[i] + z[i]^p - z[i] + f[i] for i in range(n)]
|
||||
########
|
||||
aux
|
||||
gp_action = [gp_action]
|
||||
|
Loading…
Reference in New Issue
Block a user