Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Let $k$ be a totally real number field of degree $n$.

I'd like to know how I can determine whether or not there exists a quadratic field extension $L$ of $k$ such that the extension $L/k$ is unramified at all finite primes and ramified at only at $n-1$ of the real primes of $k$. I assume that this can be determined by class field theory. For the application that I have in mind however, I'm going to need a computer algebra system like sage to be able to explicitly perform this test. How explicit can this be made?


share|cite|improve this question
up vote 8 down vote accepted

As you say, in principle the existence of such an extension can be determined using class field theory. There exists an extension of the type you need if and only if for some set $T$ consisting of $n-1$ real places, the ray class group modulo $T$ has order divisible by 2.

I don't know about sage, but ray class groups can be computed in MAGMA. Now, Magma costs money, but they have an online calculator for short computations, so if your field isn't too big, that might suffice for your purposes.

If you need more flexible solutions, it might be worth writing your own programs in some fast and powerful language, like C. A detailed discussion of algorithms for computing ray class groups can be found in H. Cohen, Advanced Topics in Computational Number Theory, GTM 193.

share|cite|improve this answer
Thanks, this is very helpful. – Ben Linowitz Aug 15 '11 at 16:58

In pari/gp (probably built into sage somehow).

poly=x^7 - x^6 - 12*x^5 + 7*x^4 + 28*x^3 - 14*x^2 - 9*x - 1; /* The roots of this polynomial define the degree 7 subfield K of Q(zeta_29). */

nf=nfinit(poly); /* This defines the number field K */

bnf=bnfinit(nf); /* This computes data associated to the number field K, like the unit group.*/

bnfcertify(bnf) /* This checks that the output of bnf is correct, and doesn't depend on GRH. The output should be $1$ */

bnrclass(bnf,[1,[1,1,1,1,1,1,0]]) /* This computes the ray class group of conductor m, where m has trivial finite place and contains 6 of the 7 infinite places. */

share|cite|improve this answer
Thank you. It never ceases to amaze me how powerful some of these computer algebra systems are. – Ben Linowitz Aug 15 '11 at 17:00

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.