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$.



Computing algebraic properties of trace fields, as given by SnapPy
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](http://www.math.uic.edu/t3m/SnapPy/) (based on Jeff Weeks' [SnapPea](http://www.geom.uiuc.edu/software/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](https://mathoverflow.net/questions/233491/for-an-arithmetic-hyperbolic-3-manifold-group-when-is-its-trace-field-not-its-i), 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](http://www.ms.unimelb.edu.au/~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**](http://projecteuclid.org/euclid.em/1046889596), *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](http://www.sagemath.org/) which mimics some of snap's [more important features](http://www.math.uic.edu/t3m/SnapPy/snap.html). In addition, sage has several methods to manipulate [number fields](http://doc.sagemath.org/html/en/reference/number_fields/sage/rings/number_field/number_field.html). 


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). 


