diff --git a/quad9/galois/labs/lab3/main.tex b/quad9/galois/labs/lab3/main.tex
new file mode 100644
index 0000000..304bd21
--- /dev/null
+++ b/quad9/galois/labs/lab3/main.tex
@@ -0,0 +1,312 @@
+\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}
