def EllipticCurve_to_ecnf_dict(E): """ Make the dict that should be fed to `make_curves_line` in `lmfdb/scripts/ecnf/import_utils.py`. It sets `iso_label`, 'a' and `number` to '1' and `cm` and `base_change` to '?' INPUT: * E - A sage elliptic curve over a number field """ E = EllipticCurve_polredabs(E) K = E.base_field() WNF = WebNumberField.from_polredabs(K.polynomial()) ainvs = [map(str,ai) for ai in map(list,E.a_invariants())] conductor = E.conductor() conductor_str = "".join(str([conductor.norm()]+list(conductor.gens_two())).split()) ec = {'field_label':WNF.label, 'conductor_label':ideal_label(conductor), 'iso_label':'a', 'number':'1', 'conductor_ideal':conductor_str, 'conductor_norm':str(conductor.norm()), 'ainvs':ainvs, 'cm':'?', 'base_change':'?'} return ec
def EllipticCurve_to_ecnf_dict(E): """ Make the dict that should be fed to `make_curves_line` in `lmfdb/scripts/ecnf/import_utils.py`. It sets `iso_label`, 'a' and `number` to '1' and `cm` and `base_change` to '?' INPUT: * E - A sage elliptic curve over a number field """ E = EllipticCurve_polredabs(E) K = E.base_field() WNF = WebNumberField.from_polredabs(K.polynomial()) ainvs = [map(str, ai) for ai in map(list, E.a_invariants())] conductor = E.conductor() conductor_str = "".join( str([conductor.norm()] + list(conductor.gens_two())).split()) ec = { 'field_label': WNF.label, 'conductor_label': ideal_label(conductor), 'iso_label': 'a', 'number': '1', 'conductor_ideal': conductor_str, 'conductor_norm': str(conductor.norm()), 'ainvs': ainvs, 'cm': '?', 'base_change': '?' } return ec
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 wnf(self): return WebNumberField.from_polredabs(self.polredabs())
def wnf(self): return WebNumberField.from_polredabs(self.polredabs())