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