# Computing algebraic properties of trace fields, as given by SnapPy

SnapPy can tell you the trace field of a hyperbolic $3$-manifold (which is awesome), but it specifies the field by outputting:

1. the minimal polynomial of the field over $\mathbb{Q}$, and
2. a decimal approximation of the field's primitive element.

I am interested in algebraic properties of the trace field, such as the lattice of field extensions between the trace field and $\mathbb{Q}$, and algebraic expressions for a set of generators of the trace field over $\mathbb{Q}$. This is in general difficult to find based on the data given (and after degree five, as we know ever since Galois, it is often literally impossible). But presumably, SnapPy "knows" more than the output it gives. It just gives the trace field in this way because it's useful for lots of other applications.

So, a general inquiry is:

Can I get SnapPy to answer algebraic questions about the trace field? For instance: What is the maximal real subfield of the trace field? Does its real subfield admit complex embeddings? What is its Galois group? (Forgive me if it is well-known how to do these things, I am pretty new to SnapPy.)

Below is a more specific question about what I need to do at the moment, with a more precise explanation of the SnapPy output.

Let $K$ be some number field, and suppose all we know about it is

1. an irreducible polynomial $m(t)∈\mathbb{Z}[t]$ such that $K≅Q(t)/m(t)$, and
2. a decimal approximation $z∈\mathbb{Q}[i]$ of a root $s∈\overline{\mathbb{Q}}$ of $m(t)$ satisfying $K=\mathbb{Q}(s)$, where we assume that $z$ closer to $s$ than it is to any of the other roots of $m(t)$.

I want to know whether $K$ can be written in the form $F(\sqrt{−d})$, where $F\subset\mathbb{R},d∈F^+$. Preferably I'd like some very easy way to check this just by looking at $m(t)$. There may be something from Galois theory that has rusted away in my brain, in which case I apologize for asking about a sub-research-level topic. Otherwise, perhaps there is some computer implementation that can check this?

I can show that when $[K:\mathbb{Q}]=4$, my condition holds if and only if $m(t)$ is of the form $t^4+2at^2+b$ where $a,b\in\mathbb{Z}$. This is done casewise according to whether or not $d\in\mathbb{N}$, then forming the primitive element and solving for $m(t)$.

Addendum: Here's a sub-question that might be more fun (following a suggestion from @DimaPasechnik). What are similar forms that $m(t)$ must take if and only if $[K:\mathbb{Q}]=2n$ for other $n$-values? Perhaps there is a recognizable pattern that can be written for general $n$.

• just a question : in general, what are the other ways for defining a number field $\mathbb{Q}[a_1,\ldots,a_n]$ except than specifying (possibly) one minimal polynomial for each $a_i$ and giving a way to select the correct root of the polynomial ? – reuns Mar 28 '16 at 4:21
• @user1952009 the way that you mention would be an improvement on the data I have from SnapPy, presuming $n>1$. In this case we only get $\mathbb{Q}(a)$ and a min poly for $a$. But another way would be to just write the $a_1,\dots,a_n$ using radicals. Or perhaps concatenate this, writing them as radicals including previously defined ones. This may not always be practical, but would be a huge help in lower degrees. – j0equ1nn Mar 28 '16 at 4:25
• @user1952009 Sure. But in any of the census tables you're going to find the degree won't be like that, and the methods for studying such things are entirely different. For instance, among the hundreds of diverse manifolds listed in the back of Machlachlan-Reid, the highest degree is $18$. – j0equ1nn Mar 28 '16 at 4:32
• aren't there computer algebra systems that will take the output you describe and compute what you need? E.g. Pari/GP and Sage should be able to tell you a lot about these fields. – Dima Pasechnik Mar 28 '16 at 11:10
• I agree with Dima that you should use a computer algebra system to compute info about these fields. While Sage will tell you everything you asked for, I'd suggest becoming acquainted with Magma as in addition to the trace field info it has a ton of functionality regarding quaternion algebras over number fields, orders in these algebras and arithmetic Fuchsian groups. For instance, all of the computations that John Voight and I did in this paper (about hyperbolic 2- and 3-manifolds) were done in Magma: www-personal.umich.edu/~linowitz/papers/isospectralsurfaces.pdf – user1073 Mar 28 '16 at 17:17

Although there has been extensive discussion of this question in the comments, I thought I might contribute something that one might consider an answer to this question. This treatment will focus on a narrow bit of the code and programs that are available and not the rich and wonderful underlying theory.

The kernel code for SnapPy (based on Jeff Weeks' SnapPea) focuses on a narrow set of things and seems to do them very efficiently. Later, Marc Culler and Nathan Dunfield provided an updated interface for the SnapPy kernel and in that process has added functionality to the original version. One facet of this interface is that SnapPy can be run inside of sage.

First let's discuss the original SnapPea kernel (for simplicity I will ignore some of the technical details involving incomplete geometric structures and non-peripheral homology, trusting that the experts will know how to deal with these issues). Essentially, this kernel can take as input an ideal triangulation of a cusped 3-manifold. From this triangulation, combinatorial invariants can be computed, like a homology, a presentation of the fundamental group, etc. However, the true utility of the SnapPea kernel is that it builds and provides an approximate solution to the Thurston gluing equations (see Thurston's notes or Chapter E of Benedetti and Petronio). This associates approximate geometric information to each ideal tetrahedron. As part of the standard SnapPy interface one can uses quadruple-double (128 bit) precision to find an approximate solution.

To promote this to an exact solution, Coulson, Goodman, Hodgson and Neumann collaborated on snap (Goodman's PhD thesis work represents a substantial contribution to the coding):

David Coulson, Oliver A. Goodman, Craig D. Hodgson, and Walter D. Neumann, MR 1758805 Computing arithmetic invariants of 3-manifolds, Experiment. Math. 9 (2000), no. 1, 127--152.

which uses pari and it's LLL algorithm to find number field that contains all of the exact values of the shapes of the ideal tetrahedra (one should consider the DNA of the manifold, because the geometric invariants of the manifold can be computed from these shapes).

Sadly, snap is no longer directly supported (although with luck and will power some have got a version of this running on a current system) however, SnapPy has functionality in sage which mimics some of snap's more important features. In addition, sage has several methods to manipulate number fields.

Perhaps this is a long way of saying no, "SnapPy" will not do the desired field computations but sage can (assuming SnapPy can describe the tetrahedral shapes of one's example with enough precision).