\documentclass[11pt,a4paper,dvipsnames]{article}
\usepackage[utf8]{inputenc}

\usepackage[catalan]{babel}
\input{../../../hw_preamble.tex}

% Ruffini macro (source: https://tex.stackexchange.com/a/122728)
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\ruffini}{mmmm}
 {% #1 = polynomial, #2 = divisor, #3 = middle row, #4 = result
  \franklin_ruffini:nnnn { #1 } { #2 } { #3 } { #4 }
 }

\seq_new:N \l_franklin_temp_seq
\tl_new:N \l_franklin_scheme_tl
\int_new:N \l_franklin_degree_int

\cs_new_protected:Npn \franklin_ruffini:nnnn #1 #2 #3 #4
 {
  % Start the first row
  \tl_set:Nn \l_franklin_scheme_tl { #2 & }
  % Split the list of coefficients
  \seq_set_split:Nnn \l_franklin_temp_seq { , } { #1 }
  % Remember the number of columns
  \int_set:Nn \l_franklin_degree_int { \seq_count:N \l_franklin_temp_seq }
  % Fill the first row
  \tl_put_right:Nx \l_franklin_scheme_tl
   { \seq_use:Nnnn \l_franklin_temp_seq { & } { & } { & } }
  % End the first row and leave two empty places in the next
  \tl_put_right:Nn \l_franklin_scheme_tl { \\ & & }
  % Split the list of coefficients and fill the second row
  \seq_set_split:Nnn \l_franklin_temp_seq { , } { #3 }
  \tl_put_right:Nx \l_franklin_scheme_tl
   { \seq_use:Nnnn \l_franklin_temp_seq { & } { & } { & } }
  % End the second row
  \tl_put_right:Nn \l_franklin_scheme_tl { \\ }
  % Compute the \cline command
  \tl_put_right:Nx \l_franklin_scheme_tl
   {
    \exp_not:N \cline { 2-\int_to_arabic:n { \l_franklin_degree_int + 1 } }
   }
  % Leave an empty place in the third row (no rule either)
  \tl_put_right:Nn \l_franklin_scheme_tl { \multicolumn{1}{r}{} & }
  % Split and fill the third row
  \seq_set_split:Nnn \l_franklin_temp_seq { , } { #4 }
  \tl_put_right:Nx \l_franklin_scheme_tl
   { \seq_use:Nnnn \l_franklin_temp_seq { & } { & } { & } }
  % Start the array (with \use:x because the array package
  % doesn't expand the argument)
  \use:x
   {
    \exp_not:n { \begin{array} } { r | *{\int_use:N \l_franklin_degree_int} { r } }
   }
  % Body of the array and finish
  \tl_use:N \l_franklin_scheme_tl
  \end{array}
 }
\ExplSyntaxOff

\newcommand{\Q}{\mathbb{Q}}
\newcommand{\Gal}{\text{Gal}}
\newcommand{\Irr}{\text{Irr}}
\newcommand{\Id}{\text{Id}}

\title{Laboratori 3: Equacions abelianes}
\author{Adrià Vilanova Martínez}

\showcorrectionsfalse % Change "true" to "false" in order to show corrections as
                      % if they weren't corrections (in black instead of red).

\begin{document}

\maketitle

\section{El teorema en llenguatge actual}
Sigui $f = 0$ amb $f \in \Q[X]$ un polinomi de grau $n$ qualsevol, tal que totes les arrels es poden expressar racionalment en funció d'una d'elles.

Sigui $\alpha$ aquesta arrel. Aleshores, per les altres arrels $\alpha_2, \ldots, \alpha_n$ hi ha una fracció polinòmica $\theta_i(X) \in \Q(X)$ tal que $\alpha_i = \theta_i(\alpha)$.

Aleshores, Abel descriu una condició addicional que és el que caracteritza les ``equacions abelianes'':
\[ \theta_i (\theta_j (\alpha)) = \theta_j (\theta_i (\alpha)), \quad \forall i, j. \]

\begin{Problem}
  Sigui $L = \Q_f$ el cos de descomposició del polinomi $f$ sobre $\Q$. Demostreu que
  \[ \alpha_2, \ldots, \alpha_n \text{ es pot expressar racionalment en } \alpha \quad \iff \quad L = \Q(\alpha). \]
\end{Problem}

$\impliedby]$ Per hipòtesi $\Q_f = Q(\alpha)$. Per definició, $\Q_f$ és el cos minimal que conté $\Q$ tal que el polinomi $f$ descomposa completament. Això vol dir que totes les arrels $\alpha_i \in \Q_f$. Per hipòtesi, $\Q_f = \Q(\alpha)$, el que vol dir justament que tota $\alpha_i$ es pot expressar racionalment en $\alpha$.

$\implies]$ El cos de descomposició és $\Q(\alpha, \alpha_2 \ldots, \alpha_n)$, però per hipòtesi hem suposat que $\alpha_2, \ldots, \alpha_n$ es poden expressar racionalment en $\alpha$, així que $\Q_f = \Q(\alpha, \alpha_2 \ldots, \alpha_n) = \Q(\alpha)$.

\begin{Problem}
  Descriviu els elements $\sigma \in \Gal(L/\Q)$ en termes de les funcions $\theta_i(X)$.
\end{Problem}

Segons la proposició d'inici de curs i l'apartat anterior sabem que un $\sigma_i$ queda determinada per $\sigma_i(\alpha)$. A més, identificant $\alpha \equiv \alpha_1$, també sabem que $\sigma_i(\alpha) \in \{ \alpha_1, \ldots, \alpha_n \}$, ja que aquestes són les arrels dels polinomis $\Irr(\alpha_i / \Q)$.

Així doncs, podem caracteritzar/descriure tots els $\Q$-automorfismes de $L$ com els $\sigma_i$ ($i \in \{ 1, \ldots, n \}$) tals que:
\[ \sigma_i(\alpha) = \alpha_i. \]

Donat que per hipòtesi $\alpha_i = \theta_i(\alpha)$, obtenim la següent caracterització:
\[ \sigma_i(\alpha) = \theta_i(\alpha). \]

\begin{Problem}
  Demostreu que si $f = 0$ és una extensió abeliana, llavors $\Gal(L / \Q)$ és un grup abelià. (Aquest és justament l'origen del terme ``grup abelià'', introduït per Weber cap al 1880.)
\end{Problem}

El fet que l'extensió (o equació) és abeliana ens diu que $\theta_i(\theta_j(\alpha)) = \theta_j(\theta_i(\alpha)) \; \forall i, j$.

Si prenem $\sigma_i, \sigma_j \in \Gal(L / \Q)$, tenim:
\[ \sigma_i(\sigma_j(\alpha)) = \theta_i(\theta_j(\alpha)) = \theta_j(\theta_i(\alpha)) = \sigma_j(\sigma_i(\alpha)). \]

Com aquesta propietat caracteritza les $\sigma_i$, aleshores sabem que:
\[ \sigma_i \cdot \sigma_j = \sigma_j \cdot \sigma_i, \quad \forall i, j. \]

\section{Un exemple}

\begin{Problem}
  Siguin $\alpha = \sqrt{2} + \sqrt{3}$ i $L = \Q(\alpha)$.

  \begin{enumerate}[a)]
    \item Calculeu el polinomi $f = \Irr(\alpha, \Q)$.
    \item Comproveu que $\alpha^2(10 - \alpha^2) = 1$ i deduiu-ne l'expressió racional de $\sqrt{10 - \alpha^2}$ en termes d'$\alpha$.
    \item Utilitzeu el mètode de Ruffini per factoritzar $f$ en $L[X]$. Concloeu que $L$ és el cos de descomposició de $f$ sobre $\Q$.
    \item Doneu les funcions racionals $\theta_i(X)$ que ens donen les altres arrels del polinomi $f$ en termes d'$\alpha$.
    \item Comproveu que $f = 0$ és una equació abeliana.

    Amb tot això ja sabem que $\Gal_\Q(f) = \Gal(L/\Q)$ és un grup abelià. A més hem vist a les classes de teoria que podem identificar-lo amb un subgrup transitiu d'ordre 4 del grup simètric $\mathcal{S}_4$. Recordeu que els únics subgrups transitius d'ordre 4 de $\mathcal{S}_4$ són el grup de Klein $V_4$ i els subgrups generats pels 4-cicles.

    \item Utilitzeu les funcions racionals $\theta_i(X)$ per demostrar que tots els elements de $\Gal_\Q(f)$ tenen ordre 2 i, per tant, $\Gal_\Q(f) \simeq V_4$.
    \item Determineu els subgrups de $V_4$ i utilitzeu-los per trobar subextensions de $L/\Q$.
  \end{enumerate}
\end{Problem}

\textbf{Solució per a):} \\
Operant en $L$ a partir de l'equació que té com a única solució $\alpha$ obtenim:
\[ X = \sqrt{2} + \sqrt{3} \implies X^2 = 5 + 2 \sqrt{2} \sqrt{3} \implies X^2 - 5 = 2 \sqrt{2} \sqrt{3} \implies \]
\[ \implies (X^2 - 5)^2 = 24 \implies (X^2 - 5)^2 - 24 = 0 \implies X^4 - 10 X^2 + 1 = 0. \]

Aleshores, sabem que com $\alpha$ és una arrel de $f(x) := X^4 - 10 X^2 + 1$, $\Irr(\alpha, \Q) \mid f$.

Per tant, l'irreductible només pot tenir graus 1, 2 o 4. Anem a discutir si l'irreductible pot tenir aquests graus o no:

\begin{itemize}
  \item \underline{$\deg \Irr(\alpha, \Q) = 1$}: L'únic candidat mònic és $g(X) = X - \alpha = 0$, però sabem que $\alpha \notin \Q$ perquè per Ruffini el polinomi $f$ no té arrels racionals (els únics candidats són 1 i -1). Com aquest candidat mònic no té tots els coeficients racionals, l'irreductible no pot tenir grau 1.

  \item \underline{$\deg \Irr(\alpha, \Q) = 2$}: Intentem descomposar $f$ en 2 polinomis de grau 2 $/ \Q$.
  \[ X^4 - 10 X^2 + 1 = (X^2 + aX + b)(X^2 + cX + d) = \]
  \[ = X^4 + X^3(c + a) + X^2(ac + b + d) + X(ad + bc) + bd \implies \]
  \[ \implies \left\{\begin{array}{l}
    a + c = 0 \implies a = -c \\
    ac + b + d = -10 \\
    ad + bc = 0 \\
    bd = 1 \implies b = d^{-1}
  \end{array}\right\} \implies \left\{\begin{array}{l}
    -c^2 + d^{-1} + d = -10 \\
    -cd + d^{-1}c = 0
  \end{array}\right\} \implies \]
  \[ \implies \begin{cases}
    c^2 - 10 = d + d^{-1}, \\
    cd = cd^{-1} \implies \begin{cases}
      c = 0, \text{ o bé} \\
      d = 1.
    \end{cases}
  \end{cases} \]

  \begin{itemize}
    \item \underline{Cas $c = 0$}:
    \[ -10 = d + d^{-1} \implies d^2 + 1 = -10d \implies d^2 + 10d + 1 = 0 \implies \]
    \[ d = \frac{-10 \pm \sqrt{100 - 4}}{2} = -5 \pm 2 \sqrt{6} \notin \Q. \]

    \item \underline{Cas $d = 1$}:
    \[ c^2 - 10 = 1 + 1 \implies c^2 = 12 \implies c = \pm \sqrt{12} \notin \Q. \]
  \end{itemize}

  Per tant, no existeix cap polinomi de grau 2 amb coeficients racionals que divideixi $f$.
\end{itemize}

Per tant, el grau de l'irreductible és 4 i això vol dir que $\Irr(\alpha, \Q) = f$.

\textbf{Solució per b):}
\[ \alpha^2 = (\sqrt{2} + \sqrt{3})^2 = 5 + 2 \sqrt{2} \sqrt{3} \implies \]
\[ \implies \alpha^2(10 - \alpha^2) = (5 + 2 \sqrt{2} \sqrt{3})(10 - 5 - 2 \sqrt{2} \sqrt{3}) = \]
\[ = (5 + 2 \sqrt{2} \sqrt{3})(5 - 2 \sqrt{2} \sqrt{3}) = 25 - 24 = 1. \]

Reordenant l'expressió tenim:
\[ 10 - \alpha^2 = \frac{1}{\alpha^2}. \]
I donat que $\alpha = \sqrt{2} + \sqrt{3} > 0$, tenim:
\[ \sqrt{10 - \alpha^2} = \frac{1}{\alpha}. \]

\textbf{Solució per c):} \\
Factoritzem $f$ per Ruffini a $\Q(\alpha)$:
\[ \ruffini{1, 0, -10, 0, 1}{\alpha}{\alpha, \alpha^2, \alpha(\alpha^2 - 10), \alpha^2(\alpha^2 - 10)}{1, \alpha, \alpha^2 - 10, \alpha(\alpha^2 - 10), 0} \]
\[ \ruffini{1, \alpha, \alpha^2 - 10, \alpha(\alpha^2 - 10)}{- \alpha}{-\alpha, 0, -\alpha(\alpha^2 - 10)}{1, 0, \alpha^2 - 10, 0} \]

En aquest punt podem factoritzar el polinomi $X^2 + \alpha^2 - 10 = 0$ manualment:
\[ X^2 = 10 - \alpha^2 \implies X = \pm\sqrt{10 - \alpha^2} = \pm \frac{1}{\alpha}. \]

Per tant:
\[ f(X) = (X - \alpha)(X + \alpha) \left( X - \frac{1}{\alpha} \right) \left( X + \frac{1}{\alpha} \right). \]

$f$ factoritza completament a $L = \Q(\alpha)$ i, per tant, $L$ és el cos de descomposició de $f$ sobre $\Q$.

\textbf{Solució per d):}
\[ \begin{cases}
  \alpha_1 = \alpha \implies \theta_1(X) = X, \\
  \alpha_2 = - \alpha \implies \theta_2(X) = -X, \\
  \alpha_3 = \frac{1}{\alpha} \implies \theta_3(X) = \frac{1}{X}, \\
  \alpha_4 = - \frac{1}{\alpha} \implies \theta_4(X) = - \frac{1}{X}.
\end{cases} \]

\textbf{Solució per e):} \\
Per comprovar que $f = 0$ és una equació abeliana és suficient amb veure que totes les parelles de polinomis $\alpha_i(X)$ commuten:

\begin{itemize}
  \item \underline{$\theta_1 = x$}, així que:
  \[ \left.\begin{array}{r}
    \theta_1(\theta_i(X)) = \theta_i(X) \\
    \theta_i(\theta_1(X)) = \theta_i(X)
  \end{array}\right\} \implies \theta_1(\theta_i(X)) = \theta_i(\theta_1(X)) = \theta_i(X) \quad \forall i. \]

  \item \underline{Amb $\theta_2(x) = -x$}:
  \[ \left.\begin{array}{r}
    \theta_2(\theta_3(X)) = \theta_2\left( \frac{1}{X} \right) = - \frac{1}{X} \\
    \theta_3(\theta_2(X)) = \theta_3(-X) = - \frac{1}{X}
  \end{array}\right\} \implies \theta_2(\theta_3(X)) = \theta_3(\theta_2(X)) = \theta_4(X). \]
  \[ \left.\begin{array}{r}
    \theta_2(\theta_4(X)) = \theta_2\left( \frac{1}{X} \right) = \frac{1}{X} \\
    \theta_4(\theta_2(X)) = \theta_4(-X) = \frac{1}{X}
  \end{array}\right\} \implies \theta_2(\theta_4(X)) = \theta_4(\theta_2(X)) = \theta_3(X). \]

  \item \underline{Amb $\theta_3(x) = \frac{1}{x}$}:
  \[ \left.\begin{array}{r}
    \theta_3(\theta_4(X)) = \theta_3\left( - \frac{1}{X} \right) = -X \\
    \theta_4(\theta_3(X)) = \theta_4\left( \frac{1}{X} \right) = -X
  \end{array}\right\} \implies \theta_3(\theta_4(X)) = \theta_4(\theta_3(X)) = \theta_2(X). \]
\end{itemize}

\textbf{Solució per f):} \\
Cada $\sigma_i$ està caracteritzat per $\theta_i(\alpha)$. Per tant, l'ordre de $\sigma_i$ és el mínim $n$ tal que $\theta_i^n (\alpha) = \alpha$ ($\sigma_1$ és l'element neutre del grup). Aleshores:
\[ \left\{ \begin{array}{rcl}
  \theta_1(X) = X & \longrightarrow & \sigma_1 \text{ té ordre 1 (element neutre)}, \\
  \theta_2^2(X) = X & \longrightarrow & \sigma_2 \text{ té ordre 2}, \\
  \theta_3^2(X) = X & \longrightarrow & \sigma_3 \text{ té ordre 2}, \\
  \theta_4^2(X) = X & \longrightarrow & \sigma_4 \text{ té ordre 2}.
\end{array} \right. \]

Per tant, $\Gal_\Q(f) \simeq V_4$.

\textbf{Solució per g):}
\[ V_4 = \{ \Id, (1 2)(3 4), (1 3)(2 4), (1 4)(2 3) \} = \{ \Id, a, b, c \}. \]

Aleshores, els subgrups del grup de Klein són el trivial, $\langle a \rangle$, $\langle b \rangle$ i $\langle c \rangle$, ja que els generats per 2 dels elements són el total. Per tant, tenim:

\begin{center}
  \begin{tikzpicture}
    \node (Q1) at (0,0) {$V_4$};
    \node (Q2) at (-2,2) {$\langle a \rangle$};
    \node (Q3) at (0,2) {$\langle b \rangle$};
    \node (Q4) at (2,2) {$\langle c \rangle$};
    \node (Q5) at (0,4) {$\{ \Id \}$};

    \draw (Q1)--(Q2);
    \draw (Q1)--(Q3);
    \draw (Q1)--(Q4);
    \draw (Q5)--(Q2);
    \draw (Q5)--(Q3);
    \draw (Q5)--(Q4);
  \end{tikzpicture}
\end{center}

Ara trobarem les subextensions de $L$. Com els 3 subgrups són isomorfs, no fa falta identificar-los amb les subextensions donat que és arbitrari.

En primer lloc, observem que $\alpha$ és arrel de $(X^2 - 5)^2 - 24 = 0$ i, per tant:
\[ (X^2 - 5)^2 = 24 \implies X^2 - 5 = \pm \sqrt{24} = \pm 2 \sqrt{6} \implies X = \pm \sqrt{5 \pm 2 \sqrt{6}}. \]

De fet:
\[ \alpha = \sqrt{5 + 2\sqrt{6}}, \]
ja que $\alpha = \sqrt{2} + \sqrt{3} > 1 + 1 = 2$, i $2 \sqrt{6} > 2 \cdot 2 = 4 \implies 5 - 2 \sqrt{6} < 1$.

Aleshores, una de les subextensions és $\Q(\sqrt{6})$.

Ara, trobem les altres 2. Per això, demostrarem que $L \equiv \Q(\alpha) = \Q(\sqrt{2}, \sqrt{3})$. Evidentment $\Q(\alpha) \subset \Q(\sqrt{2}, \sqrt{3})$ perquè $\alpha = \sqrt{2} + \sqrt{3}$. Però observem que $\sqrt{2}, \sqrt{3} \in \Q(\alpha)$, perquè:
\[ \alpha^3 = (\sqrt{2} + \sqrt{3})^3 = 2 \sqrt{2} + 6 \sqrt{3} + 9 \sqrt{2} + 3 \sqrt{3} = 11 \sqrt{2} + 9 \sqrt{3} \implies \]
\[ \implies \frac{\alpha^3 - 9 \alpha}{2} = \frac{2 \sqrt{2}}{2} = \sqrt{2} \in \Q(\alpha) \implies \]
\[ \implies \sqrt{3} = \alpha - \sqrt{2} \in \Q(\alpha). \]

Per tant, les subextensions quadràtiques $\Q(\sqrt{2})$ i $\Q(\sqrt{3})$ de $\Q(\sqrt{2}, \sqrt{3})$ també són subextensions de $L$.

\newpage

Finalment, concloem que el reticle de subextensions de $L$ és:

\begin{center}
  \begin{tikzpicture}
    \node (Q1) at (0,0) {$ \Q $};
    \node (Q2) at (-2,2) {$ \Q(\sqrt{2}) $};
    \node (Q3) at (0,2) {$ \Q(\sqrt{3}) $};
    \node (Q4) at (2,2) {$ \Q(\sqrt{6}) $};
    \node (Q5) at (0,4) {$ L = \Q(\alpha) $};

    \draw (Q1)--(Q2);
    \draw (Q1)--(Q3);
    \draw (Q1)--(Q4);
    \draw (Q5)--(Q2);
    \draw (Q5)--(Q3);
    \draw (Q5)--(Q4);
  \end{tikzpicture}
\end{center}

\end{document}
