# Virtual Office Hours

This is a copy of my email correspondence with students about questions they have about the class and homework problems. The text with >'s before it is email from students, and my response does not have >'s before it.

1. >   Hi Professor Stein, I have another LaTeX question. Do you know the
> command for the Gothic-looking font we've been using for ideals?

Here's a complete example:

\usepackage{amssymb}
\begin{document}
$\mathfrak{a}$
\end{document}


2. > For 3, it seems like Hensel's lemma is one short step of a very long,
> messy proof (proving it mod p took me at least half a page).  Am I
> doing things wrong?

YES.

> For 6, are we given anywhere a list of normalized valuations on Q(i),
> or should we not need them?

Well they're exactly the normalizations of the extensions of the
valuations from Q, and we know what those are by results I proved
during the course.

> Finally, this exam seems very difficult... I've been working on it for
> many hours and only solved a few problems... was it really intended to
> take only a day?

I messed up and made it too hard.

SO: I've decided anybody who does a reasonable number of the
problems correctly (more than half) will get at least an A- on
the exam.

> For problem 2, can we assume that arithmetic operations (addition,
> multiplication, subtraction, division, square roots) and tests for ring
> inclusion are computable, or must we prove these computable too if we
> use them?

You can assume that are computable.



3. > Um, I may be doing something wrong (again) but I think that for all n,
> the ring of integers of Q(rho) is Z[rho].  I am generating bases for
> Z[rho] using the following procedure:
>
> procedure basis(n)
> K<a> := CyclotomicField(n);
> L<b;> := NumberField(MinimalPolynomial(a+1/a));
> print [L!c : c in Basis(MaximalOrder(L));
> end procedure
>
> Am I doing something incorrectly?

No, that procedure looks right to me.  Maybe the question is a "trick"
question.


4. I just had some discussions with students about the final exam.  In fairness,
I'll summarize here what I said:

* In problem 2 you just have to give an algorithm for computing the
abstract structure of the group of units.  It's not necessary to
explain how to find the actual generators for the group as algebraic
integers.   The input to the algorithm is an irreducible monic
polynomial with integer coefficients, which defines the number field.

* In problem 3, you can work a prime at a time and use the
Chinese Remainder Theorem.  Also, for a given prime you might have
to do some nontrivial manipulation to actually apply Hensel's lemma,
e.g., set one variable equal to 0 in some cases.    If you're
stuck with showing there is a nontrivial solution modulo p,
just write "3x^3 + 4y^3 + 5 = 0 defines a genus one curve over
F_p, so by Hasse's theorem it has an F_p-rational point" and you
won't get points off for that.

* In problem 4, keep in mind that Q(zeta_n) has ring of integers Z[zeta_n].
You might want to look at a proof of this fact, which can be found
in almost any book on algebraic number theory.

* In problem 5, use finiteness of the class group.  Some power of the ideal
will be principal, so you get an equation a^n = (beta).  Now take
n-th roots...

The final is harder than I intended, so just do your best and don't
worry if you don't solve everything.  I'll care more about your
project than how you do on the final.


5. > I'm not sure what's going on here.  Maybe I'm doing somethin wrong:
> > R := PolynomialRing(RationalField());
> > w:= RootOfUnity(3);
> > K := NumberField(MinimalPolynomial(w+1/w));
> >
> >> K := NumberField(MinimalPolynomial(w+1/w));
>
>      ^
> Runtime error in 'Name': Bad argument types
>
> > w:= RootOfUnity(5);
> > K := NumberField(MinimalPolynomial(w+1/w));
>
> So for some reason, if I don't use the third root of unity everything
> works.  But something goes wrong for the third root of unity.

That's because if w = e^(2*pi*i/3) (=RootOfUnity(3)), then
w is in Q!  I.e., it is -1.  Thus the number field generated
by it is Q, so there is only one generator.


6. On Monday 17 May 2004 8:14 pm, you wrote:
> Dear Professor Stein,
>
>       I am trying to do number 4 on the final and thought it would be easy and
> helpful to figure out the answer in Magma before trying to prove it.  Boy
> was I wrong.  But I have now invested so much time into it, that I feel
> like I should get an answer out of it.
>
>       Currently I am trying to use the "MinimalField()" command, which is
> supposed to return the minimal subfield of a cyclotomic field containing an
> element.
>
>       However, when I ask for an integral basis of this field, it just gives me
> the integralbasis of the entire cyclotomic field.  Do you know what is
> wrong?  This should be a real field, so it cannot have any nth roots of
> unity in it.
>
> [...]
>
> F := PolynomialRing(RationalField());
> for mom in [3..15] do
>    print(mom);
>    w:= RootOfUnity(mom);
>    s:= w + 1/w;
>    print(s);
>    IsReal(s);
>    IntegralBasis(MinimalField(s));
> end for;
>
> Magma V2.10-22    Tue May 18 2004 20:15:09 on modular  [Seed = 2457367992]
>    -------------------------------------
>
> 3
> -1
> true
> [ 1 ]
> 4
> 0
> true
> [ 1 ]
> 5
> -zeta_5^3 - zeta_5^2 - 1
> true
> [
>     1,
>     zeta_5,
>     zeta_5^2,
>     zeta_5^3
> ]

I think you're right, and it looks like you've found a significant bug
in MAGMA.  I will forward your email along with some remarks of my own
to MAGMA as an official bug report, and also take into account that

Fortunately there is a workaround for MinimalField.  Use

NumberField(MinimalPolynomial(s))

> w := RootOfUnity(5);
> s:= w + 1/w;
> K<s> := NumberField(MinimalPolynomial(s));
> K;
Number Field with defining polynomial x^2 + x - 1 over the Rational Field
> IntegralBasis(K);
[
1,
s
]



7. > One thing that is giving me fits on the exam is the actual computation
> of the smith form of the 3x3 matrix. I know how to do it, but the actual
> computation is rather time consuming and I can't be sure that I have
> actually done the computation correctly. I know magma has a SmithForm
> function and I would like to use that to verify my result. But I can't
> seem to define the Gaussians in a way that equips them internally with a
> euclidean norm, so I get the error message
>
> >> SmithForm(M);
>
>             ^
> Runtime error in 'SmithForm': Argument 1 has no Smith algorithm
>
> Is there a way to attach the norm to the Gaussians, or is there another
> tool I could use?

I don't know.  Perhaps since you understand how to compute Smith form,
you could implement a simple (and horribly inefficient) SmithForm in
MAGMA or another package, and include your source code with your
solution to that problem?


8. >   Hi Professor Stein, I have a question about the homework. On problem 3,
> is K a separable extension of F(t)?

YES.


9. > However, I'm at a loss as
> to see how to pick g so that g is also irreducible over Q_p.  I feel like
> you need some sort of statement like:  if h \in Q_p[x] is irreducible,
> then its natural reduction modulo p^k is irreducible as an element of
> Z/p^kZ [x] for sufficiently large k.  I don't know how one proves this,
> or even if it is true.

Use Hensel's lemma, which in its stronger form says that if a polynomial h
factors mod p (plus appropriate hypothesis), then that factorization lifts to
Z_p[x].

William


10. >   Whoops, am I trying to find the wrong thing? Are we looking for the
> element of Gal(K/Q) or the element of Gal(F_(37^2)/F_37)?
>       Thanks,
>       Daniel

You are trying to find the element of Gal(K/Q).  However, you shouldn't
need MAGMA to do that, except that it would be helpful for basic operations.
Think about the definitions from class and what you have learned.


11. > [...] So we can take the ideal pOK and factor it into primes p1,
> p2 etc then pick p=p1 say.  We want to find D_p and we can get the order
> of D_p as ef.  Then S3 has some number of subgroups of order ef.  But we
> still want to know which particular one fixes the p we chose.  To do that,
> we can take the generators of p, have each of the
> subgroups act on it, and ask magma which one stabilizes.
> Then we can take the map D_p onto Gal(FP/Fp) and find the preimage of the
> frob elt.
>
> but i dont actually know how to do that in magma
> 1.  i dont know how to ask magma if 2 ideals are equivalent
> 2.  i dont know how to get elements of the galois group to act on elts.
>
> can you tell me what the relevant commands are or is there a more
> straightforward way i am missing? - i have not been
> using the hint about factoring modulo a prime.

I think you can do this problem and technically answer the question
correctly without having to use MAGMA or do anything too complicated.
Recall that the question asks for a "representative matirx of Frob_p
and the characteristic polynomial" for a certain S_3 representation,
and for some primes p.  I think each of the primes p that I ask about
are unramified in K, so you always have e=1.  Also, the element Frob_p
is only well defined up to conjugation.  The thing about S_3 is that
there are only 3 conjugacy classes, and the conjugacy class of an
element of S_3 is determined by the order of the element.  Thus you
should be able to completely solve the problem by (1) thinking about
the structure of S_3, and (2) computing the order of Frob_p.


12. > How do I factor a polynomial modulo a prime in MAGMA???

Use this function:

function factormod(f, p)
R := PolynomialRing(GF(p));
return Factorization(R!f);
end function;


13. > What does it mean for a prime ideal to lie over p?  Does it just mean
> that it contains (p)?

Exactly.  The geometric intuition is that the prime "lies over p"
in the sense that it is in the fiber of (p) via the map from Spec(O_K)
to Spec(Z).

> You ask a question about prime ideals lying over p in 7b; however,
> with the definition I remember it seems that 7b is trivially implied
> by 7a, which makes me think I am misremembering something.

No, you're OK.  It is trivial.


14. > First, is there a way to calculate in Magma with some letters left
> undetermined?  For example, if I wanted the formula for the discriminant
> of an arbitrary cubic x^3+p*x+q, is there a way of defining p and q so
> that Magma will print out -4*p^3-27*q^2 without asking me to set values
> for p and q?

MAGMA doesn't make this so easy, though it can be done.   You create
a two variable polynomial ring S over the integers, then make a polynomial
ring over S in one variable x, and ask for the discriminant.

> S := PolynomialRing(Integers(), 2);
> R := PolynomialRing(S);
> Discriminant(x^3+p*x+q);
-4*p^3 - 27*q^2

In PARI (type "gp" to run or click the PARI button on the web site)
you could just type "poldisc(x^3+p*x+q)".

> Second, what is MECCAH?  And do we get an account through you or do we
> request it from somewhere else?

Yes, I will create an account for you.  Just write back with the login
name you want (probably your fas login, but you can choose something  else).


15. > On problem 1, need we eliminate doubles from our list of class
> representatives or can we just leave 5 ideas there and know that their
> are 2 pairs of doubles.

Though I didn't explicitly ask in the problem, my intention is that
you would eliminate the multiple representatives.  I hope your
answer will list exactly three ideals, which represent each of the three
elements of the ideal class group.


16. > I don't see how your argument works, considering that the double infinite
> cone (if it is what I think it is) is not convex.  Sure, you can conclude
> that there are two distinct points in the infinite cone whose difference
> is
> in S, but it doesn't follow that the difference is in the infinite cone.
> Because of this, how do you know that each time you form a new cone, you
> have a new point?

The following is a better hint:

Hint: Mimic the broof I gave in class of Blichfeld's lemma.  Namely,
consider the map \frac{1}{2}S --> V/L.  Since \frac{1}{2}S has volume
strictly greater than m*Vol(V/L) (consider the case of equal volume
separately), there must be a single point alpha in V/L that is the
image of m+1 distinct elements of \frac{1}{2}S.  This last conclusion
isn't obvious, but it's not too hard to see---If each element
of V/L is hit by at most m elements of \frac{1}{2}S, then since
the continuous map \frac{1}{2}S --> V/L preserves volume, the volume
of \frac{1}{2}S is at most m*Vol(V/L), a contradiction.  (Cover V/L
by discs so that the inverse image of the disc in \frac{1}{2}S is
at most m copies of the disc, and note that \frac{1}{2}S is the union
of those inverse images, etc.).   Now we have P_1,...,P_{m+1} all
in \frac{1}{2}*S and all mapping to the same element of V/L.  As
before, show that 1/2(P_1-P_{m+1}), 1/2(P_2-P_{m+1}), etc. are all
in L and all in S, and they are all different.  Conclude that the
intersection of S and L has m nonzero elements.    (To get 2*m distinct
points, probably take negatives and verify something.)


17. I don't know whether every ideal in an order is
generated by two elements.


18. > This is somewhat of a rehash of the question earlier about "reducing"
> the set of generators of an ideal. I have a nice ideal
> [
>     2,
>     a - 1,
>     b - 1,
>     a*b - a - b - 3
> ]
>
> in Z[a,b] for which Magma hasn't realized that ab-a-b-3=(a-1)(b-1)-4.
> The ideal is not principal (Good b/c I don't want it to be) but I want
> to find a minimal generating set (specifically I want to see if it has 3
> or 2 generators). If I can cast the ideal to a module then I can use the
> MinimalBasis(M) command. However I can't seem to get the casting to work
> right:
>
> >> Module(I);
>          ^
> Runtime error in 'Module': The ideal must be of a relative order
>
> It seems to be because I need a RngOrdFracIdl to construct the module
> but I have a RngFunOrdIdl from the ideal command.
>
> I also tried constructing the module directly:
>
> >> M := sub;
>                   ^
> Runtime error in 'Module': Order must be over a maximal order
>
> and even replacing O with OK (the ring of integers in K) still gives the
> same error. Moreover, it seems strange that I would need to cast into a
> module to accomplish this. Is there no MinimalBasis(I) command for
> ideals?

I don't know whether MAGMA can do this computation at all, because it requires
Groebner basis over rings (instead of fields), which are iffy in general.
Here's how to ask MAGMA for a minimal basis:
---------------
R := PolynomialRing(Integers(),2);
I := ideal;
MinimalBasis(I);

MinimalBasis(I);
^
Runtime error in 'MinimalBasis': Coefficient ring of argument 1 is not a field
---------------
However, as you can see MAGMA can't do it because we're working over a ring
instead of a field.  You could try it over a field, but then you lose the
interesting structure:

R := PolynomialRing(RationalField(),2);
I := ideal;
MinimalBasis(I);
[
2
]

I'd be happy if you found some way to do this computation in MAGMA, but
my general impression is that for Groebner basis don't work so well over
integer rings.  Feel free to better mathematics by improving this.


19. Well, in particular, you can reduce the components of the second generators mod 2.  The
particularly annoying example we encountered was:

> K := NumberField(x^2+13);
> F:=Factorization((70+a)*MaximalOrder(K));
> F;
[

]

Of course,
> IsPrincipal(F[1][1]);
true

as F is generated by [2,1].  But I can't figure out how to get Magma to tell me that.

Ah, the dreaded "second return argument affects behavior of the function"
problem.    Continuing your example, try this:

t, g := IsPrincipal(F[1][1]);
g;
[2, 1]

If F[1][1] were not principal, then g would be left undefined.


20. > Looking at the following Magma transcript for problem 2:
>
>> > K := NumberField(x^4+x^2+6); Factorization(2*MaximalOrder(K));
>> [
>>     >    Two element generators:
>>         [2, 0, 0, 0]
>>         [0, 1, 1, 3], 1>,
>>     >     Two element generators:
>>         [2, 0, 0, 0]
>>         [2, 3, 2, 1], 1>,
>>     >     Two element generators:
>>         [2, 0, 0, 0]
>>         [0, 3, 2, 2], 2>
>> ]
>
> It is somewhat annoying that Magma does not choose to reduce these
> elements.

I don't know what you mean.  What does "reduce" mean?

> On problem 4, it did not discover that the ideals it had
> factored 17+\sqrt{13} into were principal, and instead represented them
> as generated by two elements, causing a good deal of wasted time on our
> part considering non-principal ideals.

If by "reduce" you mean "represent as principal if is principal",
then you should consider using the MAGMA command IsPrincipal.

K := NumberField(x^4+x^2+6);  F := Factorization(2*MaximalOrder(K));
> IsPrincipal(F[2][1]);
false
> IsPrincipal(F[3][1]);
false

The ideals in your example above are not principal, so I'm still not sure
what you mean by "reduce".

> Is there any way to make Magma automatically reduce ideals it returns?
> It should be capable of doing this very quickly indeed, as the task is
> fairly simple with Groebner bases, but I can't find a way to do it
> automatically, or in batches (say on the result of factorizations).

I don't know what you mean by reduce.


21. > In problem number 6 it appears that I is the entire ring of integers
> because if x = sqrt(5) then
> 2 + x \in I so x(2 + x) = 5 + 2x \in I.  Also 5 in I so 2 + x - 5 = -3
> + x \in I.  And so 2*(-3 + x) + 5 + 2x = -1 \in I so 1 in I.
>
> Did you mean it to be this way?  Seems kinda odd to do the CRT with one
> of the ideals being the entire ring.

No, I made a mistake by making I the unit ideal.  However, I'm going
to let the problem stand as is, so as not to cause too much confusion,
and because the rest of the problem still makes sense (it's just
ideal I_2 and do the problem for that ideal too.


22. On MAGMA, if a function has an "optional parameter," how do you change
the default value?

If the function is called "f" and the parameter is called param and
you want to set it to 1, you do this:

f(normal arguments : param := 1);


23. > Dear Professor Stein,
>   In question 3c of set 2, do you mean "nonzero prime ideal" instead of
> "nonzero ideal?"

Yes, I meant nonzero PRIME ideal.


24. > 1.  I was checking my answer on finding the discriminant of Q(sqrt(-3))
> on MAGMA, and it said it was -12.  I'm pretty sure it's -3 (cf p. 413 of
> Artin).  I typed in
>
> P:=PolynomialRing(RationalField());
> N:=NumberField(x^2+3);
> Discriminant(N);
>
> and it said "-12"
>

That's the discriminant of the number field, which is defined in MAGMA
to be the discriminant of the polynomial that defines the number field.
You want the discriminant of the maximal order:

O := MaximalOrder(N);
Discriminant(O);

etc.

> 2.  If one has a number field L over a numberfield K, and one writes
> L=K(\alpha) for some \alpha whose minimal polynomial is f(x), (which we
> can always do), then I know that its true that f(x) cannot have multiple
> roots.  I can't remember how to prove this though; it's just an
> elementary thing from Galois theory.  Do you remember?

You should prove that if f had a double root then f would be reducible.
Hint: gcd(f,f') would not be 1 if there were is a double root.

> 3.  On p. 50 of Swinnerton-Dyer, he says that the homeomorphism induced
> by an element a in the number field k is measure preserving on V_k/ k.
> I don't see how this follows; there are certainly homeomorphisms that
> are not measure preserving (this was a recurring theme on my homework
> for real analysis last semester).

Let's assume the results stated in Appendix A1.3.  Then every invariants
measure on V_k/k is a scalar multiple of the Haar measure.  If a is in k,
and mu is a Haar measure on V_k/k, then S|-->mu(a*S) is another measure
on V_k/k, so it is a fixed scalar multiple ||a|| of mu.   Because V_k/k
has finite volume and a is an automorphism (hence surjective), we have
that mu(a*V_k/k) = mu(V_k/k), so the scalar multiple ||a|| is 1.  This
implies that multiplication by a preserves the measure, as claimed on
page 50.


25. On page 4 of Swinnerton-Dyer, there is a comment about embeddings of k
into C. He claims that there are [k:Q]=n such embeddings. I just don't
see what these embeddings are. It seems like the natural embeddings are
those given by elements of the Galois group of k over Q. What am I
missing?

Remember that k need not be Galois.  For example, if k=Q(2^(1/3)), then there
are no nontrivial elements of the automorphism group of k over Q.

Here's how to understand what Swinnerton-Dyer is talking about.  By the primitive
element theorem, there exists a single element z in k such that k=Q(z).  The
map Q[x] --> k got by sending x to z induces an isomorphism
Q[x]/(f) --> k
where f is the minimal polynomial of z.  So instead let's view k as being
Q[x]/(f), and ask, "in how many ways can I embed Q[x]/(f) into the complex
numbers?"   To give an embedding of Q[x]/(f) into C is the same as giving
a homomorphism from Q[x] to C that sends f to 0.  This is the same as giving
the image of x in C, with the single requirement that the image of x be a
root of f.    Thus the embeddings of Q[x]/(f) into C are in bijection with
the roots of f.  Since deg(f) = [k:Q], the assertion follows.