Abstract cohomology class¶
Initialize self. See help(type(self)) for accurate signature.
- class darmonpoints.cohomology_abstract.CohomologyElement(parent, data)[source]¶
Bases:
ModuleElement
Define an element of H^1(G,V)
- INPUT:
G: a BigArithGroup
V: a CoeffModule
data: a list
TESTS:
sage: from darmonpoints.sarithgroup import BigArithGroup sage: from darmonpoints.cohomology_arithmetic import ArithCoh sage: G = BigArithGroup(5,6,1,use_shapiro=False,outfile='/tmp/darmonpoints.tmp') # optional - magma sage: Coh = ArithCoh(G) # optional - magma sage: 2 in Coh.hecke_matrix(13).eigenvalues() # optional - magma True sage: -4 in Coh.hecke_matrix(7).eigenvalues() # optional - magma True sage: PhiE = Coh.gen(1) # optional - magma
- class darmonpoints.cohomology_abstract.CohomologyGroup(G, V, action_map=None, **kwargs)[source]¶
Bases:
Module
- Element¶
alias of
CohomologyElement
- dimension()[source]¶
EXAMPLES:
sage: class Foo: ....: def __init__(self, x): ....: self._x = x ....: @cached_method ....: def f(self): ....: return self._x^2 sage: a = Foo(2) sage: print(a.f.cache) None sage: a.f() 4 sage: a.f.cache 4
- fox_gradient(word, red=None)[source]¶
EXAMPLES:
sage: class Foo: ....: def __init__(self, x): ....: self._x = x ....: @cached_method ....: def f(self,*args): ....: return self._x^2 sage: a = Foo(2) sage: a.f.cache {} sage: a.f() 4 sage: a.f.cache {((), ()): 4}
- gen(i)[source]¶
EXAMPLES:
sage: class Foo: ....: def __init__(self, x): ....: self._x = x ....: @cached_method ....: def f(self,*args): ....: return self._x^2 sage: a = Foo(2) sage: a.f.cache {} sage: a.f() 4 sage: a.f.cache {((), ()): 4}
- generator_acting_matrix(g)[source]¶
EXAMPLES:
sage: class Foo: ....: def __init__(self, x): ....: self._x = x ....: @cached_method ....: def f(self,*args): ....: return self._x^2 sage: a = Foo(2) sage: a.f.cache {} sage: a.f() 4 sage: a.f.cache {((), ()): 4}
- hecke_matrix(l, use_magma=True, g0=None)[source]¶
EXAMPLES:
sage: class Foo: ....: def __init__(self, x): ....: self._x = x ....: @cached_method ....: def f(self,*args): ....: return self._x^2 sage: a = Foo(2) sage: a.f.cache {} sage: a.f() 4 sage: a.f.cache {((), ()): 4}
- space()[source]¶
Calculates the space of cocyles modulo coboundaries, as a Z-module.
TESTS:
sage: from darmonpoints.sarithgroup import * sage: from darmonpoints.cohomology_abstract import * sage: from darmonpoints.ocmodule import * sage: GS = BigArithGroup(5, 6,1,use_shapiro=False,outfile=’/tmp/darmonpoints.tmp’) # optional - magma sage: G = GS.large_group() # optional - magma sage: V = OCVn(5,1) # optional - magma sage: Coh = CohomologyGroup(G,V) # optional - magma
Arithmetic cohomology¶
TESTS:
sage: from darmonpoints.findcurve import find_curve sage: from darmonpoints.cohomology_abstract import * sage: from darmonpoints.sarithgroup import * sage: from darmonpoints.util import * sage: from darmonpoints.cohomology_arithmetic import * sage: F.<r> = QuadraticField(5) sage: P = F.ideal(3/2*r + 1/2) sage: D = F.ideal(3) sage: abtuple = quaternion_algebra_invariants_from_ramification(F,D,F.real_places()[:1]) # optional - magma sage: G = BigArithGroup(P,abtuple, F.ideal(1), grouptype = ‘PSL2’,outfile = “/tmp/darmonpoints.tmp”) # optional - magma sage: H = ArithCoh(G) # optional - magma sage: primes = F.primes_of_degree_one_list(10) # optional - magma sage: H.hecke_matrix(primes[0]).charpoly() # optional - magma x^2 - 16 sage: ell = F.ideal(1/2*r + 5/2) # optional - magma sage: H.hecke_matrix(ell).charpoly() # optional - magma x^2 - 4
- class darmonpoints.cohomology_arithmetic.ArithAction(G, M, act=None)[source]¶
Bases:
Action
Encodes de action of an arithmetic group on the distributions module
- class darmonpoints.cohomology_arithmetic.ArithCoh(G, V=None, **kwargs)[source]¶
Bases:
CohomologyGroup
,UniqueRepresentation
Class for computing with arithmetic cohomology groups.
Parent class for ArithCohElement.
Initialised by inputting an arithmetic group G, and the coefficient module.
- Element¶
alias of
ArithCohElement
- class darmonpoints.cohomology_arithmetic.ArithCohBianchi(G, base, use_ps_dists=False, adjuster=None)[source]¶
Bases:
ArithCoh
- get_Lseries_term(phi, n, cov=None)[source]¶
Return the n-th coefficient of the p-adic L-series attached to an element phi of H^1(G,D): Bianchi case.
- Input:
- phi, an ArithCohElement object, representing a cohomology class
in the underlying group self;
n, a tuple (r,s) of ints;
cov, a set of representing matrices for the U_pi and U_pibar operators.
- Outputs:
a p-adic number, the coefficient of z^r * w^s in the p-adic L-series attached to phi. This will give the series attached to the identity component in weight space; in the notation of Masdeu-Palvannan-Williams, this is the power series L_p(mu,id,z,w), mu the p-adic L-function of phi.
- class darmonpoints.cohomology_arithmetic.ArithCohElement(parent, data)[source]¶
Bases:
CohomologyElement
Class for working with arithmetic cohomology elements. In particular, can handle elements of H^1(G,D), where G = congruence subgroup and D is a module of distributions.
The coefficient module (e.g. D) is self.parent().coefficient_module().
Initialised by giving the parent arithmetic cohomology group - an ArithCoh object - and %data%.
This should work equally well for classical and Bianchi modular forms. This choice is encoded (and hard-coded) in the ArithCoh parent class: in particular, it determines the choice of distribution modules used, e.g. either 1- or 2-variable distributions.
- BI(h, j=None)[source]¶
BI = ‘Basic Integral’. Computes the basic integrals required in the computation of the p-adic L-function.
Input a 2x2 matrix h in SL2(OK) (which embeds as an element of Sigma_0(p)), and a value j.
- Options for j:
- classical case: specify a non-negative integer j. Then returns the value
BI_{h,j} := Int_{h.Zp} z^j . d Phi{0 –> infty},
that is, the value of the distribution Phi{0 –> infty} at the function z^j x the indicator function of the open set h.Zp.
- Bianchi case: specify a tuple (k,l). Then returns the value
BI_{h,j} := Int_{h.(Zp x Zp)} x^k y^l . d Phi{0 –> infty},
that is, the value of the distribution Phi{0 –> infty} at the function x^k y^l x the indicator function of the open set h.(Zp x Zp).
- do not specify j. Then returns the the distribution mu whose moments are
BI_{h,j}.
- Tq_eigenvalue(ell, check=True)[source]¶
Computes the eigenvalue of the T_q operator (where q = ell in the input) acting on the cohomology class self.
Warning: assumes that self IS a Hecke eigenclass, and that the eigenvalue thus exists.
- cusp_boundary_element(cusp)[source]¶
Function to explicitly realise a parabolic arithmetic cohomology class as a coboundary after restriction to the stabiliser of a cusp. This should work for any coefficient module on which the action of Sigma_0(p) is encoded in linear algebra.
Input is a specific choice of cusp, as a tuple (a,c), representing a/c in P^1(F). Then computes the stabiliser of this cusp inside the group G=Gamma. We assume that self is in the kernel of restriction to this cusp, which will be the case for any lift of a cuspidal class to overconvergent coefficients. Then we set up a linear algebra problem to compute an element v in V such that self(gamma) = v|gamma^-1 - v for all gamma in Stab_G(a/c).
Returns this v.
- evaluate(g, he=None, check=True, twist=False, at_identity=False)[source]¶
If he is None, then gamma1 should be in Gamma0(p), and return the value of the cocycle at g. If he is not None, then g is assumed to be in Gamma, and return the evaluation of the corresponding element in the Coinduced module, via Shapiro’s isomorphism.
- evaluate_at_cusp_list(cusp_list)[source]¶
Our cohomology class, in H^1(G,V), is the image of a modular symbol Phi in Symb_G(V)under the natural connecting map in cohomology. This function computes the value Phi(D), where D is a divisor.
D is represented by input cusp_list, which is a list of pairs (n,cusp), where n is the coefficient (an integer) and cusp is a tuple (a,c) representing a/c; e.g. [(1,(3,4)),(-2,(1,0))] gives D = [3/4] - 2[inf].
Returns the value Phi(D) as an element of V.
- evaluate_cuspidal_modsym_at_cusp_list(cusp_list, j=None, q=None)[source]¶
Takes arithmetic cohomology class Phi (=self) in H^1(G,D) and evaluates it at a list of cusp (cusp_list). Fundamentally calls the function evaluate_at_cusp_list, which inverts the natural map delta from modular symbols to arithmetic cohomology.
The key functionality of this particular function is a toggle for killing Eisenstein contributions: the lift of self to a modular symbol need not be a cuspidal eigensymbol, since it can be polluted by anything in the kernel of delta. Since this kernel is Eisenstein, it is killed by T_q - N(q) - 1 for suitable primes q in the underlying field.
- Input:
- cusp list: list of cusps with coefficients. Represented as pairs (n,(a,c)),
where n is the coefficient and (a,c) represents the cusp a/c.
- jif specified, returns the jth moment of the resulting distribution.
if not, returns the whole distribution. Can be int (classical) or tuple (Bianchi).
- q (int)auxiliary prime used to kill Eisenstein contributions. If set to
-1, ignores this completely. If not, computes a prime q and applies T_q - q - 1 to recover a cuspidal eigensymbol by killing Eisenstein part.
- Output:
either a distribution (if j = None) or the jth moment of this distribution (else).
- get_Lseries_term(n, cov=None)[source]¶
Return the n-th coefficient of the p-adic L-series attached to an element phi of H^1(G,D).
Passes to parent and runs the function there to account for differences between classical and Bianchi; it will go to ArithCoh and ArithCohBianchi respectively.
If running in the classical case, n should be an integer, and we return the coefficient of z^n. If in the Bianchi case, n should be a tuple (j,k), and we return the coefficient of z^j * w^k.
- class darmonpoints.cohomology_arithmetic.ArithCohOverconvergent(G, base, use_ps_dists=False)[source]¶
Bases:
ArithCoh
- apply_Up(c, group=None, scale=1, times=0, progress_bar=False, repslocal=None, Up_reps=None)[source]¶
Apply the Up Hecke operator operator to
c
.
- get_Lseries_term(phi, n, cov=None)[source]¶
Return the n-th coefficient of the p-adic L-series attached to an element phi of H^1(G,D): One-variable case.
- Input:
- phi, an ArithCohElement object, representing a cohomology class
in the underlying group self;
n an integer;
cov, a set of representing matrices for the U_p operator.
- Outputs:
a p-adic number, the coefficient of z^n in the p-adic L-series attached to phi. This will give the series attached to the identity component in weight space; in the notation of Masdeu-Palvannan-Williams, this is the power series L_p(mu,id,z), mu the p-adic L-function of phi.
- class darmonpoints.cohomology_arithmetic.BianchiArithAction(G, M)[source]¶
Bases:
Action
Encodes de action of an arithmetic group on the distributions module
- class darmonpoints.cohomology_arithmetic.CohArbitrary(G, V, action_map=None)[source]¶
Bases:
CohomologyGroup
- Element¶
alias of
ArithCohElement
- darmonpoints.cohomology_arithmetic.get_cocycle_from_elliptic_curve(Coh, E, sign=1, use_magma=True, **kwargs)[source]¶
- darmonpoints.cohomology_arithmetic.get_overconvergent_class_bianchi(P, phiE, G, prec, aP, aPbar, sign_at_infinity=1, sign_ap=1, progress_bar=False, Ename='unknown')[source]¶
- darmonpoints.cohomology_arithmetic.get_overconvergent_class_matrices(p, E, prec, sign_at_infinity, use_ps_dists=False, use_sage_db=False, progress_bar=False)[source]¶
- darmonpoints.cohomology_arithmetic.get_overconvergent_class_quaternionic(P, phiE, G, prec, sign_at_infinity, sign_ap, use_ps_dists=False, use_sage_db=False, progress_bar=False, Ename='unknown')[source]¶
- darmonpoints.cohomology_arithmetic.get_rational_cocycle(Coh, sign=1, use_magma=True, bound=3, return_all=False, **kwargs)[source]¶
Abstract homology class¶
Initialize self. See help(type(self)) for accurate signature.
- class darmonpoints.homology_abstract.Abelianization(G)[source]¶
Bases:
HomologyGroup
- class darmonpoints.homology_abstract.ArithHomology(G, V)[source]¶
Bases:
HomologyGroup
- Element¶
alias of
ArithHomologyElement
- class darmonpoints.homology_abstract.ArithHomologyElement(parent, data)[source]¶
Bases:
HomologyElement
- class darmonpoints.homology_abstract.HomologyElement(parent, data)[source]¶
Bases:
ModuleElement
Define an element of H_1(G,V)
- INPUT:
G: a BigArithGroup
V: a CoeffModule
data: a list
- class darmonpoints.homology_abstract.HomologyGroup(G, V)[source]¶
Bases:
Module
,UniqueRepresentation
- Element¶
alias of
HomologyElement
- free_gens()[source]¶
EXAMPLES:
sage: class Foo: ....: def __init__(self, x): ....: self._x = x ....: @cached_method ....: def f(self): ....: return self._x^2 sage: a = Foo(2) sage: print(a.f.cache) None sage: a.f() 4 sage: a.f.cache 4
- gen(i)[source]¶
EXAMPLES:
sage: class Foo: ....: def __init__(self, x): ....: self._x = x ....: @cached_method ....: def f(self,*args): ....: return self._x^2 sage: a = Foo(2) sage: a.f.cache {} sage: a.f() 4 sage: a.f.cache {((), ()): 4}
Homology class¶
Initialize self. See help(type(self)) for accurate signature.
- class darmonpoints.homology.OneChains(G, V, emb=None, emb_idx=None)[source]¶
Bases:
TensorProduct
- Element¶
alias of
OneChainsElement
- class darmonpoints.homology.OneChainsElement(parent, data)[source]¶
Bases:
TensorElement
- class darmonpoints.homology.TensorElement(parent, data)[source]¶
Bases:
ModuleElement
- Define an element of H_1(G,V)
data: a list
TESTS:
- class darmonpoints.homology.TensorProduct(G, V, emb=None, emb_idx=None)[source]¶
Bases:
Module
INPUT: - G: an ArithGroup - V: a CoeffModule
- Element¶
alias of
TensorElement