class WebHeckeCharacter(WebChar, WebHecke): def _compute(self): WebHecke._compute(self) self.number = self.label2number(self.numlabel) assert len(self.number) == self.G.ngens() self.chi = HeckeChar(self.H, self.number) self.zetaorder = 0 # FIXME H.zeta_order() @property def codeinit(self): kpol = self.k.polynomial() return { 'sage': ['k.<a> = NumberField(%s)'%kpol, 'm = k.ideal(%s)'%self.modulus, 'G = RayClassGroup(k,m)', 'H = G.dual_group()', 'chi = H(%s)'%self.number], 'pari': ['k=bnfinit(%s)'%kpol, 'g=bnrinit(k,m,1)', 'chi = %s'%self.number] } @property def title(self): return r"Hecke Character: %s modulo %s" % (self.texname, self.modulus) @property def codecond(self): return { 'sage': 'chi.conductor()', 'pari': 'bnrconductorofchar(G,chi)' } @property def inducing(self): #return lmfdb_hecke2tex(self.conductor(),self.indlabel()) return None @property def indlabel(self): #return chi.primitive_character().number() return None @property def genvalues(self): logvals = self.chi.logvalues_on_gens() return self.textuple( map(self.texlogvalue, logvals)) @property def galoisorbit(self): prim = self.isprimitive return [ self._char_desc(c, prim=prim) for c in self.chi.galois_orbit() ] def value(self, val): chartex = self.char2tex(self.chi,val=val,tag=False) val = self.label2group(val) val = self.texlogvalue(self.chi.logvalue(val)) return '\(%s=%s\)'%(chartex,val) def char4url(self, chi): # FIXME: call url_character and only return (label, url) if chi is None: return ('', {}) label = self.char2tex(chi) args = {'type': 'Hecke', 'number_field': self.nflabel, 'modulus': self.ideal2label(chi.modulus()), 'number': self.number2label(chi.exponents())} return (label, args) @property def previous(self): psi = self.chi.prev_character() return self.char4url(psi) @property def next(self): psi = self.chi.next_character() return self.char4url(psi)
class WebHeckeCharacter(WebChar, WebHecke): def _compute(self): WebHecke._compute(self) self.number = self.label2number(self.numlabel) assert len(self.number) == self.G.ngens() self.chi = HeckeChar(self.H, self.number) self.zetaorder = 0 # FIXME H.zeta_order() @property def codeinit(self): kpol = self.k.polynomial() return { 'sage': [ 'k.<a> = NumberField(%s)' % kpol, 'm = k.ideal(%s)' % self.modulus, 'G = RayClassGroup(k,m)', 'H = G.dual_group()', 'chi = H(%s)' % self.number ], 'pari': [ 'k=bnfinit(%s)' % kpol, 'g=bnrinit(k,m,1)', 'chi = %s' % self.number ] } @property def title(self): return r"Hecke Character: %s modulo %s" % (self.texname, self.modulus) @property def codecond(self): return {'sage': 'chi.conductor()', 'pari': 'bnrconductorofchar(G,chi)'} @property def inducing(self): #return lmfdb_hecke2tex(self.conductor(),self.indlabel()) return None @property def indlabel(self): #return chi.primitive_character().number() return None @property def genvalues(self): logvals = self.chi.logvalues_on_gens() return self.textuple(map(self.texlogvalue, logvals)) @property def galoisorbit(self): prim = self.isprimitive return [self._char_desc(c, prim=prim) for c in self.chi.galois_orbit()] def value(self, val): chartex = self.char2tex(self.chi, val=val, tag=False) val = self.label2group(val) val = self.texlogvalue(self.chi.logvalue(val)) return '\(%s=%s\)' % (chartex, val) def char4url(self, chi): # FIXME: call url_character and only return (label, url) if chi is None: return ('', {}) label = self.char2tex(chi) args = { 'type': 'Hecke', 'number_field': self.nflabel, 'modulus': self.ideal2label(chi.modulus()), 'number': self.number2label(chi.exponents()) } return (label, args) @property def previous(self): psi = self.chi.prev_character() return self.char4url(psi) @property def next(self): psi = self.chi.next_character() return self.char4url(psi)