def characters(self): r""" Return the two characters `(\chi_1, \chi_2)` such this representation `\pi_{f, p}` is equal to the principal series `\pi(\chi_1, \chi_2)`. These are the unramified characters mapping `p` to the roots of the Satake polynomial, so in most cases (but not always) they will be defined over an extension of the coefficient field of self. EXAMPLES:: sage: LocalComponent(Newform('11a'), 17).characters() [ Character of Q_17*, of level 0, mapping 17 |--> d, Character of Q_17*, of level 0, mapping 17 |--> -d - 2 ] sage: LocalComponent(Newforms(Gamma1(5), 6, names='a')[1], 3).characters() [ Character of Q_3*, of level 0, mapping 3 |--> -3/2*a1 + 12, Character of Q_3*, of level 0, mapping 3 |--> -3/2*a1 - 12 ] """ f = self.satake_polynomial() if not f.is_irreducible(): # This can happen; see the second example above d = f.roots()[0][0] else: d = self.coefficient_field().extension(f, 'd').gen() G = SmoothCharacterGroupQp(self.prime(), d.parent()) return Sequence([ G.character(0, [d]), G.character(0, [self.newform()[self.prime()] - d]) ], cr=True, universe=G)
def characters(self): r""" Return the two characters `(\chi_1, \chi_2)` such this representation `\pi_{f, p}` is equal to the principal series `\pi(\chi_1, \chi_2)`. These are the unramified characters mapping `p` to the roots of the Satake polynomial, so in most cases (but not always) they will be defined over an extension of the coefficient field of self. EXAMPLES:: sage: LocalComponent(Newform('11a'), 17).characters() [ Character of Q_17*, of level 0, mapping 17 |--> d, Character of Q_17*, of level 0, mapping 17 |--> -d - 2 ] sage: LocalComponent(Newforms(Gamma1(5), 6, names='a')[1], 3).characters() [ Character of Q_3*, of level 0, mapping 3 |--> -3/2*a1 + 12, Character of Q_3*, of level 0, mapping 3 |--> -3/2*a1 - 12 ] """ f = self.satake_polynomial() if not f.is_irreducible(): # This can happen; see the second example above d = f.roots()[0][0] else: d = self.coefficient_field().extension(f, 'd').gen() G = SmoothCharacterGroupQp(self.prime(), d.parent()) return Sequence([G.character(0, [d]), G.character(0, [self.newform()[self.prime()] - d])], cr=True, universe=G)
def characters(self): r""" Return the two characters `(\chi_1, \chi_2)` such that the local component `\pi_{f, p}` is the induction of the character `\chi_1 \times \chi_2` of the Borel subgroup. EXAMPLE:: sage: LocalComponent(Newforms(Gamma1(13), 2, names='a')[0], 13).characters() [ Character of Q_13*, of level 0, mapping 13 |--> 3*a0 + 2, Character of Q_13*, of level 1, mapping 2 |--> a0 + 2, 13 |--> -3*a0 - 7 ] """ G = SmoothCharacterGroupQp(self.prime(), self.coefficient_field()) chi1 = G.character(0, [self.newform()[self.prime()]]) chi2 = G.character(0, [self.prime()]) * self.central_character() / chi1 return Sequence([chi1, chi2], cr=True, universe=G)
def central_character(self): r""" Return the central character of this representation. This is the restriction to `\QQ_p^\times` of the unique smooth character `\omega` of `\mathbf{A}^\times / \QQ^\times` such that `\omega(\varpi_\ell) = \ell^j \varepsilon(\ell)` for all primes `\ell \nmid Np`, where `\varpi_\ell` is a uniformiser at `\ell`, `\varepsilon` is the Nebentypus character of the newform `f`, and `j` is the twist factor (see the documentation for :func:`~LocalComponent`). EXAMPLES:: sage: LocalComponent(Newform('27a'), 3).central_character() Character of Q_3*, of level 0, mapping 3 |--> 1 sage: LocalComponent(Newforms(Gamma1(5), 5, names='c')[0], 5).central_character() Character of Q_5*, of level 1, mapping 2 |--> c0 + 1, 5 |--> 125 sage: LocalComponent(Newforms(DirichletGroup(24)([1, -1,-1]), 3, names='a')[0], 2).central_character() Character of Q_2*, of level 3, mapping 7 |--> 1, 5 |--> -1, 2 |--> -2 """ from sage.arith.all import crt chi = self.newform().character() f = self.prime()**self.conductor() N = self.newform().level() // f G = DirichletGroup(f, self.coefficient_field()) chip = G([chi(crt(ZZ(x), 1, f, N)) for x in G.unit_gens()]).primitive_character() a = crt(1, self.prime(), f, N) if chip.conductor() == 1: return SmoothCharacterGroupQp( self.prime(), self.coefficient_field()).character( 0, [chi(a) * self.prime()**self.twist_factor()]) else: return SmoothCharacterGroupQp( self.prime(), self.coefficient_field()).character( chip.conductor().valuation(self.prime()), list((~chip).values_on_gens()) + [chi(a) * self.prime()**self.twist_factor()])
def characters(self): r""" Return the defining characters of this representation. In this case, it will return the unique unramified character `\chi` of `\QQ_p^\times` such that this representation is equal to `\mathrm{St} \otimes \chi`, where `\mathrm{St}` is the Steinberg representation (defined as the quotient of the parabolic induction of the trivial character by its trivial subrepresentation). EXAMPLES: Our first example is the newform corresponding to an elliptic curve of conductor `37`. This is the nontrivial quadratic twist of Steinberg, corresponding to the fact that the elliptic curve has non-split multiplicative reduction at 37:: sage: LocalComponent(Newform('37a'), 37).characters() [Character of Q_37*, of level 0, mapping 37 |--> -1] We try an example in odd weight, where the central character isn't trivial:: sage: Pi = LocalComponent(Newforms(DirichletGroup(21)([-1, 1]), 3, names='j')[0], 7); Pi.characters() [Character of Q_7*, of level 0, mapping 7 |--> -1/2*j0^2 - 7/2] sage: Pi.characters()[0] ^2 == Pi.central_character() True An example using a non-standard twist factor:: sage: Pi = LocalComponent(Newforms(DirichletGroup(21)([-1, 1]), 3, names='j')[0], 7, twist_factor=3); Pi.characters() [Character of Q_7*, of level 0, mapping 7 |--> -7/2*j0^2 - 49/2] sage: Pi.characters()[0]^2 == Pi.central_character() True """ return [ SmoothCharacterGroupQp( self.prime(), self.coefficient_field()).character(0, [ self.newform()[self.prime()] * self.prime() **((self.twist_factor() - self.newform().weight() + 2) / 2) ]) ]