def G_name(self): """ More-or-less standardized name of the abstract group """ import re wnf = WebNumberField.from_polredabs(self.polredabs()) if not wnf.is_null(): mygalstring = wnf.galois_string() if re.search('Trivial', mygalstring) is not None: return '$C_1$' # Have to remove dollar signs return mygalstring if self.polredabs().degree() < 12: # Let pari compute it for us now from sage.all import pari galt = int(list(pari('polgalois(' + str(self.polredabs()) + ')'))[2]) from lmfdb.transitive_group import WebGaloisGroup tg = WebGaloisGroup.from_nt(self.polredabs().degree(), galt) return tg.display_short() return self._data["G-Name"]
def G_name(self): """ More-or-less standardized name of the abstract group """ import re wnf = WebNumberField.from_polredabs(self.polredabs()) if not wnf.is_null(): mygalstring = wnf.galois_string() if re.search('Trivial', mygalstring) is not None: return '$C_1$' # Have to remove dollar signs return mygalstring if self.polredabs().degree() < 12: # Let pari compute it for us now from sage.all import pari galt = int(list(pari('polgalois(' + str(self.polredabs()) + ')'))[2]) from lmfdb.transitive_group import WebGaloisGroup tg = WebGaloisGroup.from_nt(self.polredabs().degree(), galt) return tg.display_short() return self._data["G-Name"]
def gg(self): if not self.haskey('gg'): self._data['gg'] = WebGaloisGroup.from_nt(self.degree(), self.galois_t()) return self._data['gg']
def render_field_webpage(args): data = None info = {} if 'label' in args: label = clean_input(args['label']) data = lfdb().find_one({'label': label}) if data is None: bread = get_bread([("Search error", ' ')]) info['err'] = "Field " + label + " was not found in the database." info['label'] = label return search_input_error(info, bread) title = 'Local Number Field ' + label polynomial = coeff_to_poly(string2list(data['coeffs'])) p = data['p'] e = data['e'] f = data['f'] cc = data['c'] GG = data['gal'] gn = GG[0] gt = GG[1] the_gal = WebGaloisGroup.from_nt(gn,gt) isgal = ' Galois' if the_gal.order() == gn else ' not Galois' abelian = ' and abelian' if the_gal.is_abelian() else '' galphrase = 'This field is'+isgal+abelian+' over $\Q_{%d}$.'%p autstring = r'\Gal' if the_gal.order() == gn else r'\Aut' prop2 = [ ('Label', label), ('Base', '\(\Q_{%s}\)' % p), ('Degree', '\(%s\)' % data['n']), ('e', '\(%s\)' % e), ('f', '\(%s\)' % f), ('c', '\(%s\)' % cc), ('Galois group', group_display_short(gn, gt, db())), ] Pt = PolynomialRing(QQ, 't') Pyt = PolynomialRing(Pt, 'y') eisenp = Pyt(str(data['eisen'])) unramp = Pyt(str(data['unram'])) # Look up the unram poly so we can link to it unramdata = lfdb().find_one({'p': p, 'n': f, 'c': 0}) if unramdata is not None: unramfriend = "/LocalNumberField/%s" % unramdata['label'] else: logger.fatal("Cannot find unramified field!") unramfriend = '' rfdata = lfdb().find_one({'p': p, 'n': {'$in': [1, 2]}, 'rf': data['rf']}) if rfdata is None: logger.fatal("Cannot find discriminant root field!") rffriend = '' else: rffriend = "/LocalNumberField/%s" % rfdata['label'] gsm = data['gsm'] if gsm == '0': gsm = 'Not computed' elif gsm == '-1': gsm = 'Does not exist' else: gsm = web_latex(coeff_to_poly(string2list(gsm))) info.update({ 'polynomial': web_latex(polynomial), 'n': data['n'], 'p': p, 'c': data['c'], 'e': data['e'], 'f': data['f'], 't': data['t'], 'u': data['u'], 'rf': printquad(data['rf'], p), 'hw': data['hw'], 'slopes': show_slopes(data['slopes']), 'gal': group_display_knowl(gn, gt, db()), 'gt': gt, 'inertia': group_display_inertia(data['inertia'], db()), 'unram': web_latex(unramp), 'eisen': web_latex(eisenp), 'gms': data['gms'], 'gsm': gsm, 'galphrase': galphrase, 'autstring': autstring, 'subfields': format_subfields(data['subfields'],p), 'aut': data['aut'], }) friends = [('Galois group', "/GaloisGroup/%dT%d" % (gn, gt))] if unramfriend != '': friends.append(('Unramified subfield', unramfriend)) if rffriend != '': friends.append(('Discriminant root field', rffriend)) bread = get_bread([(label, ' ')]) learnmore = [('Completeness of the data', url_for(".completeness_page")), ('Source of the data', url_for(".how_computed_page")), ('Local field labels', url_for(".labels_page"))] return render_template("lf-show-field.html", credit=LF_credit, title=title, bread=bread, info=info, properties2=prop2, friends=friends, learnmore=learnmore)
def gg(self): if not self.haskey('gg'): self._data['gg'] = WebGaloisGroup.from_nt(self.degree(), self.galois_t()) return self._data['gg']
def render_field_webpage(args): data = None info = {} if 'label' in args: label = clean_input(args['label']) data = lfdb().find_one({'label': label}) if data is None: bread = get_bread([("Search error", ' ')]) info['err'] = "Field " + label + " was not found in the database." info['label'] = label return search_input_error(info, bread) title = 'Local Number Field ' + label polynomial = coeff_to_poly(string2list(data['coeffs'])) p = data['p'] e = data['e'] f = data['f'] cc = data['c'] GG = data['gal'] gn = GG[0] gt = GG[1] the_gal = WebGaloisGroup.from_nt(gn,gt) isgal = ' Galois' if the_gal.order() == gn else ' not Galois' abelian = ' and abelian' if the_gal.is_abelian() else '' galphrase = 'This field is'+isgal+abelian+' over $\Q_{%d}$.'%p autstring = r'\Gal' if the_gal.order() == gn else r'\Aut' prop2 = [ ('Label', label), ('Base', '\(\Q_{%s}\)' % p), ('Degree', '\(%s\)' % data['n']), ('e', '\(%s\)' % e), ('f', '\(%s\)' % f), ('c', '\(%s\)' % cc), ('Galois group', group_display_short(gn, gt, db())), ] Pt = PolynomialRing(QQ, 't') Pyt = PolynomialRing(Pt, 'y') eisenp = Pyt(str(data['eisen'])) unramp = Pyt(str(data['unram'])) # Look up the unram poly so we can link to it unramdata = lfdb().find_one({'p': p, 'n': f, 'c': 0}) if unramdata is not None: unramfriend = "/LocalNumberField/%s" % unramdata['label'] else: logger.fatal("Cannot find unramified field!") unramfriend = '' rfdata = lfdb().find_one({'p': p, 'n': {'$in': [1, 2]}, 'rf': data['rf']}) if rfdata is None: logger.fatal("Cannot find discriminant root field!") rffriend = '' else: rffriend = "/LocalNumberField/%s" % rfdata['label'] gsm = data['gsm'] if gsm == '0': gsm = 'Not computed' elif gsm == '-1': gsm = 'Does not exist' else: gsm = web_latex(coeff_to_poly(string2list(gsm))) info.update({ 'polynomial': web_latex(polynomial), 'n': data['n'], 'p': p, 'c': data['c'], 'e': data['e'], 'f': data['f'], 't': data['t'], 'u': data['u'], 'rf': printquad(data['rf'], p), 'hw': data['hw'], 'slopes': show_slopes(data['slopes']), 'gal': group_display_knowl(gn, gt, db()), 'gt': gt, 'inertia': group_display_inertia(data['inertia'], db()), 'unram': web_latex(unramp), 'eisen': web_latex(eisenp), 'gms': data['gms'], 'gsm': gsm, 'galphrase': galphrase, 'autstring': autstring, 'subfields': format_subfields(data['subfields'],p), 'aut': data['aut'], }) friends = [('Galois group', "/GaloisGroup/%dT%d" % (gn, gt))] if unramfriend != '': friends.append(('Unramified subfield', unramfriend)) if rffriend != '': friends.append(('Discriminant root field', rffriend)) bread = get_bread([(label, ' ')]) learnmore = [('Completeness of the data', url_for(".completeness_page")), ('Source of the data', url_for(".how_computed_page")), ('Local field labels', url_for(".labels_page"))] return render_template("lf-show-field.html", credit=LF_credit, title=title, bread=bread, info=info, properties2=prop2, friends=friends, learnmore=learnmore)
def render_field_webpage(args): data = None info = {} if 'label' in args: label = clean_input(args['label']) data = db.lf_fields.lookup(label) if data is None: bread = get_bread([("Search Error", ' ')]) info['err'] = "Field " + label + " was not found in the database." info['label'] = label return search_input_error(info, bread) title = 'Local Number Field ' + prettyname(data) polynomial = coeff_to_poly(data['coeffs']) p = data['p'] Qp = r'\Q_{%d}' % p e = data['e'] f = data['f'] cc = data['c'] gt = data['gal'] gn = data['n'] the_gal = WebGaloisGroup.from_nt(gn,gt) isgal = ' Galois' if the_gal.order() == gn else ' not Galois' abelian = ' and abelian' if the_gal.is_abelian() else '' galphrase = 'This field is'+isgal+abelian+' over $\Q_{%d}$.'%p autstring = r'\Gal' if the_gal.order() == gn else r'\Aut' prop2 = [ ('Label', label), ('Base', '\(%s\)' % Qp), ('Degree', '\(%s\)' % data['n']), ('e', '\(%s\)' % e), ('f', '\(%s\)' % f), ('c', '\(%s\)' % cc), ('Galois group', group_display_short(gn, gt)), ] # Look up the unram poly so we can link to it unramlabel = db.lf_fields.lucky({'p': p, 'n': f, 'c': 0}, projection=0) if unramlabel is None: logger.fatal("Cannot find unramified field!") unramfriend = '' else: unramfriend = "/LocalNumberField/%s" % unramlabel unramdata = db.lf_fields.lookup(unramlabel) Px = PolynomialRing(QQ, 'x') Pxt=PolynomialRing(Px,'t') Pt = PolynomialRing(QQ, 't') Ptx = PolynomialRing(Pt, 'x') if data['f'] == 1: unramp = r'$%s$' % Qp # Eliminate t from the eisenstein polynomial eisenp = Pxt(str(data['eisen']).replace('y','x')) eisenp = Pt(str(data['unram'])).resultant(eisenp) eisenp = web_latex(eisenp) else: unramp = data['unram'].replace('t','x') unramp = web_latex(Px(str(unramp))) unramp = prettyname(unramdata)+' $\\cong '+Qp+'(t)$ where $t$ is a root of '+unramp eisenp = Ptx(str(data['eisen']).replace('y','x')) eisenp = '$'+web_latex(eisenp, False)+'\\in'+Qp+'(t)[x]$' rflabel = db.lf_fields.lucky({'p': p, 'n': {'$in': [1, 2]}, 'rf': data['rf']}, projection=0) if rflabel is None: logger.fatal("Cannot find discriminant root field!") rffriend = '' else: rffriend = "/LocalNumberField/%s" % rflabel gsm = data['gsm'] if gsm == [0]: gsm = 'Not computed' elif gsm == [-1]: gsm = 'Does not exist' else: gsm = web_latex(coeff_to_poly(gsm)) info.update({ 'polynomial': web_latex(polynomial), 'n': data['n'], 'p': p, 'c': data['c'], 'e': data['e'], 'f': data['f'], 't': data['t'], 'u': data['u'], 'rf': lf_display_knowl( rflabel, name=printquad(data['rf'], p)), 'base': lf_display_knowl(str(p)+'.1.0.1', name='$%s$'%Qp), 'hw': data['hw'], 'slopes': show_slopes(data['slopes']), 'gal': group_display_knowl(gn, gt), 'gt': gt, 'inertia': group_display_inertia(data['inertia']), 'unram': unramp, 'eisen': eisenp, 'gms': data['gms'], 'gsm': gsm, 'galphrase': galphrase, 'autstring': autstring, 'subfields': format_subfields(data['subfields'],p), 'aut': data['aut'], }) friends = [('Galois group', "/GaloisGroup/%dT%d" % (gn, gt))] if unramfriend != '': friends.append(('Unramified subfield', unramfriend)) if rffriend != '': friends.append(('Discriminant root field', rffriend)) bread = get_bread([(label, ' ')]) learnmore = [('Completeness of the data', url_for(".completeness_page")), ('Source of the data', url_for(".how_computed_page")), ('Local field labels', url_for(".labels_page"))] return render_template("lf-show-field.html", credit=LF_credit, title=title, bread=bread, info=info, properties2=prop2, friends=friends, learnmore=learnmore)