Loading [MathJax]/jax/output/HTML-CSS/jax.js
Ask Your Question
0

restricting a NumberField to the reals for the calculation of a Galois group

asked 4 years ago

Tintin1 gravatar image

updated 4 years ago

I am trying to calculate a Galois Group. I have the following code

x=QQbar(7**(1/8))
L.<x>=NumberField(x.minpoly())
G=L.galois_group(names='x')
print(G)

The output is

Galois group of Galois closure in x of Number Field in x with defining polynomial x^8 - 7

I would like to restrict the number field L to the reals. My number field should be non-complex and contain the real root of the minimum polynomial only. How do I acchieve that in my code?

Thanks

Preview: (hide)

2 Answers

Sort by » oldest newest most voted
0

answered 4 years ago

Tintin1 gravatar image

The question might be addressed by considering a specific subfield:

 x=QQbar(7**(1/8))
 L.<x>=NumberField(x.minpoly())
 Ls=L.subfields(degree=2)           
 print(Ls)
 G=Ls[0][0].galois_group(names='x')
 print(G.list())

In this case, the subfield which is real is of degree 2, seen as a vector space. The number field can be restricted to the reals by considering the appropriate subfield which is a proper subset of the reals. The output of the above code is

[
(Number Field in x0 with defining polynomial x^2 - 7, Ring morphism:
  From: Number Field in x0 with defining polynomial x^2 - 7
  To:   Number Field in x with defining polynomial x^8 - 7
  Defn: x0 |--> -x^4, None)
]
[(), (1,2)]
Preview: (hide)
link
0

answered 4 years ago

dan_fulea gravatar image

We can ask sage for all subfields, take then those that are totally real among them. This first try gives:

sage: var('x');
sage: L.<a> = NumberField(x^8-7)
sage: [F_data for F_data in L.subfields() if F_data[0].is_totally_real()]
[(Number Field in a0 with defining polynomial x,
  Ring morphism:
    From: Number Field in a0 with defining polynomial x
    To:   Number Field in a with defining polynomial x^8 - 7
    Defn: 0 |--> 0,
  None),
 (Number Field in a1 with defining polynomial x^2 - 7,
  Ring morphism:
    From: Number Field in a1 with defining polynomial x^2 - 7
    To:   Number Field in a with defining polynomial x^8 - 7
    Defn: a1 |--> -a^4,
  None)]

So the totally real subfields in the list come with their embeddings. I.e. the F_data is a tuple with three components, the pythonically 0.th component is the field.

The first field listed above is Q=Q(0), where 0 is the root of x, the second field is the field Q(7), where 7 (considered algebraically) is the root of x27. We want the maximal degree, so an idea is to sort w.r.t. the degrees and take the maximal degree. The code doing this is:

sage: var('x');
sage: L.<a> = NumberField(x^8-7)
sage: L_totally_real_subfields = [(F, emb) for (F, emb, _) in L.subfields() if F.is_totally_real()]
sage: L_totally_real_subfields.sort(key=lambda data: data[0].degree())
sage: L_totally_real_subfields[-1]
(Number Field in a1 with defining polynomial x^2 - 7,
 Ring morphism:
   From: Number Field in a1 with defining polynomial x^2 - 7
   To:   Number Field in a with defining polynomial x^8 - 7
   Defn: a1 |--> -a^4)

Let's "do the same" with some nice cyclotomic field...

sage: K.<z> = CyclotomicField(17)
sage: K_totally_real_subfields = [F for (F, emb, _) in K.subfields() if F.is_totally_real()]
sage: len(K_totally_real_subfields)
4
sage: K_totally_real_subfields.sort(key=lambda F: F.degree())
sage: K_totally_real_subfields[-1]
Number Field in z3 with defining polynomial x^8 + x^7 - 7*x^6 - 6*x^5 + 15*x^4 + 10*x^3 - 10*x^2 - 4*x + 1 with z3 = 1.864944458808712?
sage: _.defining_polynomial().roots(ring=QQbar, multiplicities=False)
[-1.965946199367804?,
 -1.700434271459229?,
 -1.205269272758513?,
 -0.5473259801441657?,
 0.1845367189266040?,
 0.8914767115530766?,
 1.478017834441319?,
 1.864944458808712?]
Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 4 years ago

Seen: 377 times

Last updated: Jan 04 '21