Algebraic Number Theory

(PARI-GP version 2.11.0)

Binary Quadratic Forms

create ax^{2} + bxy + cy^{2} (distance d) Qfb(a, b, c, {d}) reduce x (s = \sqrt{D}, l = ⌊s⌋) qfbred(x, \{flag\}, \{D\}, \{l\}, \{s\}) return [y, g], g ∈ SL_{2}(Z), y = g · x reduced qfbredsl2(x) composition of forms x*y or qfbnucomp(x, y, l) n-th power of form x^n or qfbnupow(x, n) composition without reduction qfbcompraw(x, y) n-th power without reduction qfbpowraw(x, n) prime form of disc. x above prime p qfbprimeform(x, p) class number of disc. x qfbclassno(x) Hurwitz class number of disc. x qfbhclassno(x) solve Q(x, y) = p in integers, p prime qfbsolve(Q, p)

Quadratic Fields

quadratic number ω = \sqrt{x} or (1 + \sqrt{x})/2 quadgen(x) minimal polynomial of ω quadpoly(x) discriminant of Q(\sqrt{x}) quaddisc(x) regulator of real quadratic field quadregulator(x) fundamental unit in real Q(\sqrt{D}) quadunit(D,\{'w\}) class group of Q(\sqrt{D}) quadclassunit(D, \{flag\}, \{t\}) Hilbert class field of Q(\sqrt{D}) quadhilbert(D, \{flag\}) … using specific class invariant (D < 0) polclass(D, {inv}) ray class field modulo f of Q(\sqrt{D}) quadray(D, f, \{flag\})

General Number Fields: Initializations

The number field K = Q[X]/(f) is given by irreducible f ∈ Q[X]. We denote θ = X̄ the canonical root of f in K. A nf structure contains a maximal order and allows operations on elements and ideals. A bnf adds class group and units. A bnr is attached to ray class groups and class field theory. A rnf is attached to relative extensions L/K. init number field structure nf nfinit(f, {flag})

known integer basis B nfinit([f, B]) order maximal at vp = [p_{1}, …, p_{k}] nfinit([f, vp]) order maximal at all p ≤ P nfinit([f, P]) certify maximal order nfcertify(nf )

nf members:

a monic F ∈ Z[X] defining K nf .pol number of real/complex places nf .r1/r2/sign discriminant of nf nf .disc T_{2} matrix nf .t2 complex roots of F nf .roots integral basis of Z_{K} as powers of θ nf .zk different/codifferent nf .diff, nf .codiff index [Z_{K} : Z[X]/(F)] nf .index

recompute nf using current precision nfnewprec(nf) init relative rnf L = K[Y]/(g) rnfinit(nf , g) init bnf structure bnfinit(f, {flag}) bnf members: same as nf , plus

underlying nf bnf .nf classgroup bnf .clgp regulator bnf .reg fundamental/torsion units bnf .fu, bnf .tu compress a bnf for storage bnfcompress(bnf ) recover a bnf from compressed bnfz bnfinit(bnfz) add S-class group and units, yield bnf S bnfsunit(bnf , S) init class field structure bnr bnrinit(bnf , m, {flag}) bnr members: same as bnf , plus

underlying bnf bnr.bnf big ideal structure bnr.bid modulus bnr.mod structure of (Z_{K}/m)^{∗} bnr.zkst

Fields, subfields, embeddings

Defining polynomials, embeddings smallest poly defining f = 0 (slow) polredabs(f, {flag}) small poly defining f = 0 (fast) polredbest(f, {flag}) random Tschirnhausen transform of f poltschirnhaus(f) Q[t]/(f) ⊂ Q[t]/(g) ? Isomorphic? nfisincl(f, g), nfisisom reverse polmod a = A(t) mod T (t) modreverse(a) compositum of Q[t]/(f), Q[t]/(g) polcompositum(f, g, {flag}) compositum of K[t]/(f), K[t]/(g) nfcompositum(nf , f, g, {flag}) splitting field of K (degree divides d) nfsplitting(nf , {d}) signs of real embeddings of x nfeltsign(nf , x, {pl}) complex embeddings of x nfeltembed(nf , x, {pl}) T ∈ K[t], # of real roots of σ(T) ∈ R[t] nfpolsturm(nf , T, {pl})

Subfields, polynomial factorization subfields (of degree d) of nf nfsubfields(nf , {d}) d-th degree subfield of Q(ζ_{n}) polsubcyclo(n, d, {v}) roots of unity in nf nfrootsof1(nf ) roots of g belonging to nf nfroots(nf , g) factor g in nf nffactor(nf , g) factor g mod prime pr in nf nffactormod(nf , g, pr)

Linear and algebraic relations poly of degree ≤ k with root x ∈ C algdep(x, k) alg. dep. with pol. coeffs for series s seralgdep(s, x, y) small linear rel. on coords of vector x lindep(x)

Basic Number Field Arithmetic (nf)

Number field elements are t INT, t FRAC, t POL, t POLMOD, or t COL (on integral basis nf .zk).

Basic operations x + y nfeltadd(nf , x, y) x × y nfeltmul(nf , x, y) x^{n}, n ∈ Z nfeltpow(nf , x, n) x/y nfeltdiv(nf , x, y) q = x\/y :=round(x/y) nfeltdiveuc(nf , x, y) r = x%y := x − (x\/y)y nfeltmod(nf , x, y) … [q, r] as above nfeltdivrem(nf , x, y) reduce x modulo ideal A nfeltreduce(nf , x, A) absolute trace Tr_{K/Q}(x) nfelttrace(nf , x) absolute norm N_{K/Q}(x) nfeltnorm(nf , x)

Multiplicative structure of K^{∗}; K^{∗}/(K^{∗})^{n} valuation v𝔭(x) nfeltval(nf , x, 𝔭) … write x = π^{v𝔭(x)}y nfeltval(nf , x, 𝔭, &y) quadratic Hilbert symbol (at 𝔭) nfhilbert(nf , a, b, {𝔭}) b such that xb^{n} = v is small idealredmodpower(nf , x, n)

Maximal order and discriminant integral basis of field Q[x]/(f) nfbasis(f) field discriminant of field f = 0 nfdisc(f) express x on integer basis nfalgtobasis(nf , x) express element x as a polmod nfbasistoalg(nf , x)

Dedekind Zeta Function ζ_{K}, Hecke L series R = [c, w, h] in initialization means we restrict s ∈ C to domain |ℜ(s) − c| < w, |ℑ(s)| < h; R = [w, h] encodes [1/2, w, h] and [h] encodes R = [1/2, 0, h] (critical line up to height h). ζ_{K} as Dirichlet series, N(I) < b dirzetak(nf , b)

init ζ_{K}^{(k)}(s) for k ≤ n L = lfuninit(bnf , R, {n = 0}) compute ζ_{K}(s) (n-th derivative) lfun(L, s, {n = 0}) compute Λ_{K}(s) (n-th derivative) lfunlambda(L, s, {n = 0})

init L_{K}^{(k)}(s, χ) for k ≤ n L = lfuninit([bnr, chi], R, {n = 0}) compute L_{K}(s, χ) (n-th derivative) lfun(L, s, {n}) Artin root number of K bnrrootnumber(bnr, chi, {flag}) L(1, χ), for all χ trivial on H bnrL1(bnr, {H}, {flag})

Class Groups & Units (bnf, bnr)

Class field theory data a_{1}, {a_{2}} is usually bnr (ray class field), bnr, H (congruence subgroup) or bnr, χ (character on bnr.clgp). Any of these define a unique abelian extension of K. remove GRH assumption from bnf bnfcertify(bnf ) expo. of ideal x on class gp bnfisprincipal(bnf , x, {flag}) expo. of ideal x on ray class gp bnrisprincipal(bnr, x, {flag}) expo. of x on fund. units bnfisunit(bnf , x) as above for S-units bnfissunit(bnfs, x) signs of real embeddings of bnf .fu bnfsignunit(bnf ) narrow class group bnfnarrow(bnf )

Class Field Theory ray class number for modulus m bnrclassno(bnf , m) discriminant of class field bnrdisc(a_{1}, {a_{2}}) ray class numbers, l list of moduli bnrclassnolist(bnf , l) discriminants of class fields bnrdisclist(bnf , l, {arch}, {flag})

decode output from bnrdisclist       bnfdecodemodule(nf , fa)

is modulus the conductor? bnrisconductor(a_{1}, {a_{2}}) is class field (bnr, H) Galois over K^{G} bnrisgalois(bnr, G, H) action of automorphism on bnr.gen bnrgaloismatrix(bnr, aut)

apply bnrgaloismatrix M to H  bnrgaloisapply(bnr, M, H)

characters on bnr.clgp s.t. χ(g_{i}) = e(v_{i}) bnrchar(bnr, g, {v}) conductor of character χ bnrconductor(bnr, chi) conductor of extension bnrconductor(a_{1}, {a_{2}}, {flag}) conductor of extension K[Y]/(g) rnfconductor(bnf , g) Artin group of extension K[Y]/(g) rnfnormgroup(bnr, g) subgroups of bnr, index <= b subgrouplist(bnr, b, {flag}) rel. eq. for class field def’d by sub rnfkummer(bnr, sub, {d}) same, using Stark units (real field) bnrstark(bnr, sub, {flag}) is a an n-th power in K_{v} ? nfislocalpower(nf , v, a, n) cyclic L/K satisf. local conditions nfgrunwaldwang(nf , P, D, pl)

Logarithmic class group logarithmic ℓ-class group bnflog(bnf , ℓ) [ẽ(F_{v}/Q_{p}), f̃(F_{v}/Q_{p})] bnflogef(bnf , pr) exp deg_{F} (A) bnflogdegree(bnf , A, ℓ) is ℓ-extension L/K locally cyclotomic rnfislocalcyclo(rnf )

\begin{matrix}c \\ ◯ \end{matrix} 2018 Karim Belabas. Permissions on back. v2.35

Ideals: elements, primes, or matrix of generators in HNF is id an ideal in nf ? nfisideal(nf , id) is x principal in bnf ? bnfisprincipal(bnf , x) give [a, b], s.t. aZ_{K} + bZ_{K} = x idealtwoelt(nf , x, {a}) put ideal a (aZ_{K} + bZ_{K}) in HNF form idealhnf(nf , a, {b}) norm of ideal x idealnorm(nf , x) minimum of ideal x (direction v) idealmin(nf , x, v) LLL-reduce the ideal x (direction v) idealred(nf , x, {v})

Ideal Operations add ideals x and y idealadd(nf , x, y) multiply ideals x and y idealmul(nf , x, y, {flag}) intersection of ideals x and y idealintersect(nf , x, y, {flag}) n-th power of ideal x idealpow(nf , x, n, {flag}) inverse of ideal x idealinv(nf , x) divide ideal x by y idealdiv(nf , x, y, {flag}) Find (a, b) ∈ x × y, a + b = 1 idealaddtoone(nf , x, {y}) coprime integral A, B such that x = A/B idealnumden(nf , x)

Primes and Multiplicative Structure factor ideal x in Z_{K} idealfactor(nf , x) expand ideal factorization in K idealfactorback(nf , f, {e}) is ideal A an n-th power ? idealispower(nf , A, n) expand elt factorization in K nffactorback(nf , f, {e}) decomposition of prime p in Z_{K} idealprimedec(nf , p) valuation of x at prime ideal pr idealval(nf , x, pr) weak approximation theorem in nf idealchinese(nf , x, y) a ∈ K, s.t. v𝔭(a) = v𝔭(x) if v𝔭(x) ≠ 0 idealappr(nf , x) a ∈ K such that (a · x, y) = 1 idealcoprime(nf , x, y) give bid =structure of (Z_{K}/id)^{∗} idealstar(nf , id, {flag}) structure of (1 + 𝔭)/(1 + 𝔭^{k}) idealprincipalunits(nf , pr, k) discrete log of x in (Z_{K}/bid)^{∗} ideallog(nf , x, bid) idealstar of all ideals of norm ≤ b ideallist(nf , b, {flag}) add Archimedean places ideallistarch(nf , b, {ar}, {flag}) init modpr structure nfmodprinit(nf , pr) project t to Z_{K}/pr nfmodpr(nf , t, modpr) lift from Z_{K}/pr nfmodprlift(nf , t, modpr)

Galois theory over Q

conjugates of a root θ of nf nfgaloisconj(nf , {flag}) apply Galois automorphism s to x nfgaloisapply(nf , s, x) Galois group of field Q[x]/(f) polgalois(f) initializes a Galois group structure G galoisinit(pol, {den}) character table of G galoischartable(G) conjugacy classes of G galoisconjclasses(G) det(1 − ρ(g)T), χ character of ρ galoischarpoly(G, χ, {o}) det(ρ(g)), χ character of ρ galoischardet(G, χ, {o}) action of p in nfgaloisconj form galoispermtopol(G, {p}) identify as abstract group galoisidentify(G) export a group for GAP/MAGMA galoisexport(G, {flag}) subgroups of the Galois group G galoissubgroups(G) is subgroup H normal? galoisisnormal(G, H) subfields from subgroups galoissubfields(G, {flag}, {v}) fixed field galoisfixedfield(G, perm, {flag}, {v}) Frobenius at maximal ideal P idealfrobenius(nf , G, P) ramification groups at P idealramgroups(nf , G, P) is G abelian? galoisisabelian(G, {flag})

abelian number fields/Q  galoissubcyclo(N,H,{flag},{v})

Algebraic Number Theory

(PARI-GP version 2.11.0)

The galpol package

query the package: polynomial galoisgetpol(a,b,{s}) …: permutation group galoisgetgroup(a,b) …: group description galoisgetname(a,b)

Relative Number Fields (rnf)

Extension L/K is defined by T ∈ K[x].

absolute equation of L rnfequation(nf , T, {flag}) is L/K abelian? rnfisabelian(nf , T)

                                                                  relative nfalgtobasis                   rnfalgtobasis(rnf , x)
                                                                  relative nfbasistoalg                   rnfbasistoalg(rnf , x)
                                                                  relative idealhnf                        rnfidealhnf(rnf , x)
                                                                  relative idealmul                       rnfidealmul(rnf , x, y)
                                                                  relative idealtwoelt                   rnfidealtwoelt(rnf , x)

Lifts and Push-downs

absolute → relative representation for x rnfeltabstorel(rnf , x) relative → absolute representation for x rnfeltreltoabs(rnf , x) lift x to the relative field rnfeltup(rnf , x) push x down to the base field rnfeltdown(rnf , x)

                                                                  idem for x ideal: (rnfideal)reltoabs, abstorel, up, down

Norms and Trace

relative norm of element x ∈ L rnfeltnorm(rnf , x) relative trace of element x ∈ L rnfelttrace(rnf , x) absolute norm of ideal x rnfidealnormabs(rnf , x) relative norm of ideal x rnfidealnormrel(rnf , x) solutions of N_{K/Q}(y) = x ∈ Z bnfisintnorm(bnf , x) is x ∈ Q a norm from K? bnfisnorm(bnf , x, {flag}) initialize T for norm eq. solver rnfisnorminit(K, pol, {flag}) is a ∈ K a norm from L? rnfisnorm(T, a, {flag}) initialize t for Thue equation solver thueinit(f) solve Thue equation f(x, y) = a thue(t, a, {sol}) characteristic poly. of a mod T rnfcharpoly(nf , T, a, {v})

Factorization

factor ideal x in L rnfidealfactor(rnf , x) [S, T]: T_{i,j} | S_{i}; S primes of K above p rnfidealprimedec(rnf , p)

Maximal order Z_{L} as a Z_{K}-module

                                                                  relative polredbest                      rnfpolredbest(nf , T)
                                                                  relative polredabs                       rnfpolredabs(nf , T)

relative Dedekind criterion, prime pr rnfdedekind(nf , T, pr) discriminant of relative extension rnfdisc(nf , T) pseudo-basis of Z_{L} rnfpseudobasis(nf , T)

General Z_{K}-modules: M = [matrix, vec. of ideals] ⊂ L relative HNF / SNF nfhnf(nf , M), nfsnf multiple of det M nfdetint(nf , M) HNF of M where d = nfdetint(M) nfhnfmod(x, d) reduced basis for M rnflllgram(nf , T, M) determinant of pseudo-matrix M rnfdet(nf , M) Steinitz class of M rnfsteinitz(nf , M) Z_{K}-basis of M if Z_{K}-free, or 0 rnfhnfbasis(bnf , M) n-basis of M, or (n + 1)-generating set rnfbasis(bnf , M) is M a free Z_{K}-module? rnfisfree(bnf , M)

Associative Algebras

A is a general associative algebra given by a multiplication table mt (over Q or F_{p}); represented by al from algtableinit. create al from mt (over F_{p}) algtableinit(mt, {p = 0}) group algebra Q[G] (or F_{p}[G]) alggroup(G, {p = 0}) center of group algebra alggroupcenter(G, {p = 0})

Properties

is (mt, p) OK for algtableinit? algisassociative(mt, {p = 0}) multiplication table mt algmultable(al) dimension of A over prime subfield algdim(al) characteristic of A algchar(al) is A commutative? algiscommutative(al) is A simple? algissimple(al) is A semi-simple? algissemisimple(al) center of A algcenter(al) Jacobson radical of A algradical(al) radical J and simple factors of A/J algsimpledec(al)

Operations on algebras

create A/I, I two-sided ideal algquotient(al, I) create A_{1} ⊗ A_{2} algtensor(al1 , al2 ) create subalgebra from basis B algsubalg(al, B) quotients by ortho. central idempotents e algcentralproj(al, e) isomorphic alg. with integral mult. table algmakeintegral(mt) prime subalgebra of semi-simple A over F_{p} algprimesubalg(al) find isomorphism A ≅ M_{d}(F_{q}) algsplit(al)

Operations on lattices in algebras

lattice generated by cols. of M alglathnf(al, M) … by the products xy, x ∈ lat1, y ∈ lat2 alglatmul(al, lat1 , lat2 ) sum lat1 + lat2 of the lattices alglatadd(al, lat1 , lat2 ) intersection lat1 ∩ lat2 alglatinter(al, lat1 , lat2 ) test lat1 ⊂ lat2 alglatsubset(al, lat1 , lat2 ) generalized index (lat2 : lat1) alglatindex(al, lat1 , lat2 ) {x ∈ al | x · lat1 ⊂ lat2} alglatlefttransporter(al, lat1 , lat2 ) {x ∈ al | lat1 · x ⊂ lat2} alglatrighttransporter(al, lat1 , lat2 ) test x ∈ lat (set c = coord. of x) alglatcontains(al, lat, x, {&c}) element of lat with coordinates c alglatelement(al, lat, c)

Operations on elements

a + b, a − b, −a algadd(al, a, b), algsub, algneg a × b, a^{2} algmul(al, a, b), algsqr a^{n}, a^{−1} algpow(al, a, n), alginv is x invertible ? (then set z = x^{−1}) algisinv(al, x, {&z}) find z such that x × z = y algdivl(al, x, y) find z such that z × x = y algdivr(al, x, y) does z s.t. x × z = y exist? (set it) algisdivl(al, x, y, {&z}) matrix of v ↦ x · v algtomatrix(al, x) absolute norm algnorm(al, x) absolute trace algtrace(al, x) absolute char. polynomial algcharpoly(al, x) given a ∈ A and polynomial T, return T (a) algpoleval(al, T, a) random element in a box algrandom(al, b)

Based on an earlier version by Joseph H. Silverman July 2018 v2.35. Copyright \begin{matrix}c \\ ◯ \end{matrix} 2018 K. Belabas Permission is granted to make and distribute copies of this card provided the copyright and this permission notice are preserved on all copies. Send comments and corrections to ⟨Karim.Belabas@math.u-bordeaux.fr⟩

Central Simple Algebras

A is a central simple algebra over a number field K; represented by al from alginit; K is given by a nf structure. create CSA from data alginit(B, C, {v}, {maxord = 1})

multiplication table over K B = K, C = mt cyclic algebra (L/K, σ, b) B = rnf , C = [sigma, b] quaternion algebra (a, b)_{K} B = K, C = [a, b] matrix algebra M_{d}(K) B = K, C = d local Hasse invariants over K B = K, C = [d, [PR, HF], HI ]

Properties type of al (mt, CSA) algtype(al) dimension of A over Q algdim(al, 1) dimension of al over its center K algdim(al) degree of A (= \sqrt{dim_{K} A}) algdegree(al) al a cyclic algebra (L/K, σ, b); return σ algaut(al) … return b algb(al) … return L/K, as an rnf algsplittingfield(al) split A over an extension of K algsplittingdata(al) splitting field of A as an rnf over center algsplittingfield(al) multiplication table over center algrelmultable(al) places of K at which A ramifies algramifiedplaces(al) Hasse invariants at finite places of K alghassef(al) Hasse invariants at infinite places of K alghassei(al) Hasse invariant at place v alghasse(al, v) index of A over K (at place v) algindex(al, {v}) is al a division algebra? (at place v) algisdivision(al, {v}) is A ramified? (at place v) algisramified(al, {v}) is A split? (at place v) algissplit(al, {v})

Operations on elements reduced norm algnorm(al, x) reduced trace algtrace(al, x) reduced char. polynomial algcharpoly(al, x) express x on integral basis algalgtobasis(al, x) convert x to algebraic form algbasistoalg(al, x) map x ∈ A to M_{d}(L), L split. field algtomatrix(al, x)

Orders Z-basis of order O_{0} algbasis(al) discriminant of order O_{0} algdisc(al) Z-basis of natural order in terms O_{0}’s basis alginvbasis(al)

Based on an earlier version by Joseph H. Silverman July 2018 v2.35. Copyright \begin{matrix}c \\ ◯ \end{matrix} 2018 K. Belabas

Permission is granted to make and distribute copies of this card provided the copyright and this permission notice are preserved on all copies. Send comments and corrections to ⟨Karim.Belabas@math.u-bordeaux.fr⟩