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.
EXAMPLES: First load the database:
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 primevar
– 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 primesd
– 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 primed
– 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 sage: sortkey(QuadraticField(-3)) (2, 3, False, x^2 + 3)
>>> from sage.all import * >>> from sage.databases.jones import sortkey >>> sortkey(QuadraticField(-Integer(3))) (2, 3, False, x^2 + 3)