John Jones’s tables of number fields#

In order to use the Jones database, the optional database_jones_numfield package must be installed using the Sage command

sage -i database_jones_numfield


This is a table of number fields with bounded ramification and degree $$\leq 6$$. You can query the database for all number fields in Jones’s tables with bounded ramification and degree.

sage: J = JonesDatabase()
sage: J
John Jones's table of number fields with bounded ramification and degree <= 6

>>> from sage.all import *
>>> J = JonesDatabase()
>>> J
John Jones's table of number fields with bounded ramification and degree <= 6


List the degree and discriminant of all fields in the database that have ramification at most at 2:

sage: [(k.degree(), k.disc()) for k in J.unramified_outside([2])]    # optional - database_jones_numfield
[(1, 1), (2, -4), (2, -8), (2, 8), (4, 256), (4, 512), (4, -1024), (4, -2048), (4, 2048), (4, 2048), (4, 2048)]

>>> from sage.all import *
>>> [(k.degree(), k.disc()) for k in J.unramified_outside([Integer(2)])]    # optional - database_jones_numfield
[(1, 1), (2, -4), (2, -8), (2, 8), (4, 256), (4, 512), (4, -1024), (4, -2048), (4, 2048), (4, 2048), (4, 2048)]


List the discriminants of the fields of degree exactly 2 unramified outside 2:

sage: [k.disc() for k in J.unramified_outside([2],2)]                # optional - database_jones_numfield
[-4, -8, 8]

>>> from sage.all import *
>>> [k.disc() for k in J.unramified_outside([Integer(2)],Integer(2))]                # optional - database_jones_numfield
[-4, -8, 8]


List the discriminants of cubic field in the database ramified exactly at 3 and 5:

sage: [k.disc() for k in J.ramified_at([3,5],3)]                     # optional - database_jones_numfield
[-135, -675, -6075, -6075]
sage: factor(6075)
3^5 * 5^2
sage: factor(675)
3^3 * 5^2
sage: factor(135)
3^3 * 5

>>> from sage.all import *
>>> [k.disc() for k in J.ramified_at([Integer(3),Integer(5)],Integer(3))]                     # optional - database_jones_numfield
[-135, -675, -6075, -6075]
>>> factor(Integer(6075))
3^5 * 5^2
>>> factor(Integer(675))
3^3 * 5^2
>>> factor(Integer(135))
3^3 * 5


List all fields in the database ramified at 101:

sage: J.ramified_at(101)                                             # optional - database_jones_numfield
[Number Field in a with defining polynomial x^2 - 101,
Number Field in a with defining polynomial x^4 - x^3 + 13*x^2 - 19*x + 361,
Number Field in a with defining polynomial x^5 + x^4 - 6*x^3 - x^2 + 18*x + 4,
Number Field in a with defining polynomial x^5 + 2*x^4 + 7*x^3 + 4*x^2 + 11*x - 6,
Number Field in a with defining polynomial x^5 - x^4 - 40*x^3 - 93*x^2 - 21*x + 17]

>>> from sage.all import *
>>> J.ramified_at(Integer(101))                                             # optional - database_jones_numfield
[Number Field in a with defining polynomial x^2 - 101,
Number Field in a with defining polynomial x^4 - x^3 + 13*x^2 - 19*x + 361,
Number Field in a with defining polynomial x^5 + x^4 - 6*x^3 - x^2 + 18*x + 4,
Number Field in a with defining polynomial x^5 + 2*x^4 + 7*x^3 + 4*x^2 + 11*x - 6,
Number Field in a with defining polynomial x^5 - x^4 - 40*x^3 - 93*x^2 - 21*x + 17]

class sage.databases.jones.JonesDatabase[source]#

Bases: object

get(S, var='a')[source]#

Return all fields in the database ramified exactly at the primes in S.

INPUT:

• S – list or set of primes, or a single prime

• var – the name used for the generator of the number fields (default ‘a’).

EXAMPLES:

sage: J = JonesDatabase()              # optional - database_jones_numfield
sage: J.get(163, var='z')              # optional - database_jones_numfield
[Number Field in z with defining polynomial x^2 + 163,
Number Field in z with defining polynomial x^3 - x^2 - 54*x + 169,
Number Field in z with defining polynomial x^4 - x^3 - 7*x^2 + 2*x + 9]
sage: J.get([3, 4])                    # optional - database_jones_numfield
Traceback (most recent call last):
...
ValueError: S must be a list of primes

>>> from sage.all import *
>>> J = JonesDatabase()              # optional - database_jones_numfield
>>> J.get(Integer(163), var='z')              # optional - database_jones_numfield
[Number Field in z with defining polynomial x^2 + 163,
Number Field in z with defining polynomial x^3 - x^2 - 54*x + 169,
Number Field in z with defining polynomial x^4 - x^3 - 7*x^2 + 2*x + 9]
>>> J.get([Integer(3), Integer(4)])                    # optional - database_jones_numfield
Traceback (most recent call last):
...
ValueError: S must be a list of primes

ramified_at(S, d=None, var='a')[source]#

Return all fields in the database of degree d ramified exactly at the primes in S. The fields are ordered by degree and discriminant.

INPUT:

• S – list or set of primes

• d – None (default, in which case all fields of degree <= 6 are returned) or a positive integer giving the degree of the number fields returned.

• var – the name used for the generator of the number fields (default ‘a’).

EXAMPLES:

sage: # optional - database_jones_numfield
sage: J = JonesDatabase()
sage: J.ramified_at([101,109])
[]
sage: J.ramified_at([109])
[Number Field in a with defining polynomial x^2 - 109,
Number Field in a with defining polynomial x^3 - x^2 - 36*x + 4,
Number Field in a with defining polynomial x^4 - x^3 + 14*x^2 + 34*x + 393]
sage: J.ramified_at(101)
[Number Field in a with defining polynomial x^2 - 101,
Number Field in a with defining polynomial x^4 - x^3 + 13*x^2 - 19*x + 361,
Number Field in a with defining polynomial x^5 + x^4 - 6*x^3 - x^2 + 18*x + 4,
Number Field in a with defining polynomial x^5 + 2*x^4 + 7*x^3 + 4*x^2 + 11*x - 6,
Number Field in a with defining polynomial x^5 - x^4 - 40*x^3 - 93*x^2 - 21*x + 17]
sage: J.ramified_at((2, 5, 29), 3, 'c')
[Number Field in c with defining polynomial x^3 - x^2 - 8*x - 28,
Number Field in c with defining polynomial x^3 - x^2 + 10*x + 102,
Number Field in c with defining polynomial x^3 - x^2 - 48*x - 188,
Number Field in c with defining polynomial x^3 - x^2 + 97*x - 333]

>>> from sage.all import *
>>> # optional - database_jones_numfield
>>> J = JonesDatabase()
>>> J.ramified_at([Integer(101),Integer(109)])
[]
>>> J.ramified_at([Integer(109)])
[Number Field in a with defining polynomial x^2 - 109,
Number Field in a with defining polynomial x^3 - x^2 - 36*x + 4,
Number Field in a with defining polynomial x^4 - x^3 + 14*x^2 + 34*x + 393]
>>> J.ramified_at(Integer(101))
[Number Field in a with defining polynomial x^2 - 101,
Number Field in a with defining polynomial x^4 - x^3 + 13*x^2 - 19*x + 361,
Number Field in a with defining polynomial x^5 + x^4 - 6*x^3 - x^2 + 18*x + 4,
Number Field in a with defining polynomial x^5 + 2*x^4 + 7*x^3 + 4*x^2 + 11*x - 6,
Number Field in a with defining polynomial x^5 - x^4 - 40*x^3 - 93*x^2 - 21*x + 17]
>>> J.ramified_at((Integer(2), Integer(5), Integer(29)), Integer(3), 'c')
[Number Field in c with defining polynomial x^3 - x^2 - 8*x - 28,
Number Field in c with defining polynomial x^3 - x^2 + 10*x + 102,
Number Field in c with defining polynomial x^3 - x^2 - 48*x - 188,
Number Field in c with defining polynomial x^3 - x^2 + 97*x - 333]

unramified_outside(S, d=None, var='a')[source]#

Return all fields in the database of degree d unramified outside S. If d is omitted, return fields of any degree up to 6. The fields are ordered by degree and discriminant.

INPUT:

• S – list or set of primes, or a single prime

• d – None (default, in which case all fields of degree <= 6 are returned) or a positive integer giving the degree of the number fields returned.

• var – the name used for the generator of the number fields (default ‘a’).

EXAMPLES:

sage: J = JonesDatabase()             # optional - database_jones_numfield
sage: J.unramified_outside([101,109]) # optional - database_jones_numfield
[Number Field in a with defining polynomial x - 1,
Number Field in a with defining polynomial x^2 - 101,
Number Field in a with defining polynomial x^2 - 109,
Number Field in a with defining polynomial x^3 - x^2 - 36*x + 4,
Number Field in a with defining polynomial x^4 - x^3 + 13*x^2 - 19*x + 361,
Number Field in a with defining polynomial x^4 - x^3 + 14*x^2 + 34*x + 393,
Number Field in a with defining polynomial x^5 + x^4 - 6*x^3 - x^2 + 18*x + 4,
Number Field in a with defining polynomial x^5 + 2*x^4 + 7*x^3 + 4*x^2 + 11*x - 6,
Number Field in a with defining polynomial x^5 - x^4 - 40*x^3 - 93*x^2 - 21*x + 17]

>>> from sage.all import *
>>> J = JonesDatabase()             # optional - database_jones_numfield
>>> J.unramified_outside([Integer(101),Integer(109)]) # optional - database_jones_numfield
[Number Field in a with defining polynomial x - 1,
Number Field in a with defining polynomial x^2 - 101,
Number Field in a with defining polynomial x^2 - 109,
Number Field in a with defining polynomial x^3 - x^2 - 36*x + 4,
Number Field in a with defining polynomial x^4 - x^3 + 13*x^2 - 19*x + 361,
Number Field in a with defining polynomial x^4 - x^3 + 14*x^2 + 34*x + 393,
Number Field in a with defining polynomial x^5 + x^4 - 6*x^3 - x^2 + 18*x + 4,
Number Field in a with defining polynomial x^5 + 2*x^4 + 7*x^3 + 4*x^2 + 11*x - 6,
Number Field in a with defining polynomial x^5 - x^4 - 40*x^3 - 93*x^2 - 21*x + 17]

sage.databases.jones.sortkey(K)[source]#

A completely deterministic sorting key for number fields.

EXAMPLES:

sage: from sage.databases.jones import sortkey

>>> from sage.all import *