diff --git a/quad9/galois/labs/.gitignore b/quad9/galois/labs/.gitignore
new file mode 100644
index 0000000..f0de8a3
--- /dev/null
+++ b/quad9/galois/labs/.gitignore
@@ -0,0 +1 @@
+main.pdf
diff --git a/quad9/galois/labs/lab2/main.tex b/quad9/galois/labs/lab2/main.tex
new file mode 100644
index 0000000..d6fb5bb
--- /dev/null
+++ b/quad9/galois/labs/lab2/main.tex
@@ -0,0 +1,303 @@
+\documentclass[11pt,a4paper,dvipsnames]{article}
+\usepackage[utf8]{inputenc}
+
+\usepackage[catalan]{babel}
+\input{../../../hw_preamble.tex}
+
+\title{Laboratori 2: Discriminant\\Teoria de Galois}
+\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{L'equació general de grau $n$}
+
+Siguin $X_1, \ldots, X_n, A_n, X$ indeterminades sobre un cos $K$, i $L = K(A_n, X_1, \ldots, X_n)$. El \textbf{polinomi general de grau $n$} sobre $K$ és el polinomi:
+\[ F = A_n (X - X_1) \cdots (X - X_n) \in L[X]. \]
+
+Els coeficients d'aquest polinomi són clarament polinomis en $X_1, \ldots, X_n, A_n$.
+
+\begin{Problem}
+  Escrivim $F = A_n (X^n - s_1 x^{n-1} + s_2 x^{n-2} + \cdots + (-1)^n s_n)$. Doneu fórmules explícites per a les funcions polinòmiques $s_1, \ldots, s_n$ en termes de $X_1, \ldots, X_n$.
+\end{Problem}
+
+Demostrarem per inducció que aquests polinomis són:
+\[ s_k = \sum_{1 \leq i_1 < i_2 < \ldots < i_k \leq n} X_{i_1} X_{i_2} \cdots X_{i_k}. \]
+
+\underline{Cas base:} ($n = 1$)
+
+\[ F = A_n(X - X_1). \]
+
+L'expressió proposada per $F$ en funció dels $s_k$ és $A_n(X - s_1)$, on $s_1 = X_1$. Així doncs, veiem que és igual a $F$, comprovant així que l'expressió és certa per $n = 1$.
+
+\underline{Pas inductiu:} ($n < n$)
+
+En aquest cas tenim (usarem com a conveni que $\tilde{s}_0 = 1$ per simplificar l'expressió):
+\[ F = A_n \left[ \prod_{k = 1}^{n - 1} (X - X_k) \right] (X - X_n) = A_n \left[ \sum_{k = 0}^{n - 1} (-1)^k X^{(n - 1) - k} \cdot \tilde{s}_k \right] (X - X_n) = \]
+\[ = A_n \left( \sum_{k = 0}^{n - 1} (-1)^{k} X^{n - k} \cdot \tilde{s}_k - \sum_{k = 0}^{n - 1} (-1)^k X^{(n - 1) - k} \cdot \tilde{s}_k X_n \right) = \]
+\[ = A_n \left( \sum_{k = 0}^{n - 1} (-1)^{k} X^{n - k} \cdot \tilde{s}_k + \sum_{k = 1}^n (-1)^k X^{n - k} \cdot \tilde{s}_{k - 1} X_n \right) = \]
+\[ = A_n \left( X^n \cancel{\tilde{s}_0} + \sum_{k = 1}^{n - 1} (-1)^k X^{n - k} (\tilde{s}_k + \tilde{s}_{k - 1} X_n) + (-1)^n \tilde{s}_{n - 1} X_n \right). \]
+
+Comprovem que:
+\[ \begin{cases}
+  [x^n] F(x) = 1, \\
+  [x^{n - k}] F(x) = (-1)^k (\tilde{s}_k + \tilde{s}_{k - 1} X_n) \notate[X]{{}={}}{1}{\scriptstyle \text{Hip. inductiva}} (-1)^k s_k \quad \forall k \in \{ 1, \ldots, n - 1 \}, \\
+  [x^0] F(x) = (-1)^n \tilde{s}_{n - 1} X_n = (-1)^n X_1 \cdots X_{n - 1} \cdot X_n = (-1)^n s_1.
+\end{cases} \]
+
+\begin{Problem}
+  Demostreu que els $s_k(X_1, \ldots, X_n)$ són \textbf{polinomis simètrics} en $X_1, \ldots, X_n$, és a dir, que
+  \[ \forall \sigma \in \mathcal{S}_n \quad s_k(X_{\sigma(1)}, \ldots, X_{\sigma(n)}) = s_k(X_1, \ldots, X_n). \]
+\end{Problem}
+
+\[ s_k(X_{\sigma(1)}, \ldots X_{\sigma(n)}) = \sum_{1 \leq i_1 < \ldots < i_k \leq n} X_{\sigma(i_1)} \cdots X_{\sigma(i_k)} = \]
+\[ = \sum_{\{i_1, \ldots, i_k\} \in Y} X_{\sigma(i_1)} \cdots X_{\sigma(i_k)}, \]
+on $Y := \{ \{i_1, \ldots, i_k\} : i_j \neq i_{j'} \; \forall j \neq j' \}$.
+
+És clar que:
+\[ \sigma Y \equiv \{ \{\sigma(i_1), \ldots, \sigma(i_k)\} : \{i_1, \ldots, i_k\} \in Y \} = Y \quad \forall \sigma \in S^k. \]
+
+Per tant:
+\[ s_k(X_{\sigma(1)}, \ldots X_{\sigma(n)}) = \sum_{\{\sigma^{-1}(i_1), \ldots \sigma^{-1}(i_k)\} \in \sigma^{-1} Y} X_{\sigma^{-1}(\sigma(i_1))} \cdots X_{\sigma^{-1}(\sigma(i_k))} = \]
+\[ = \sum_{\{m_1, \ldots m_k\} \in Y} X_{i_1} \cdots X_{i_k} = s_k(X_1, \ldots, X_n). \]
+
+\hrulefill
+
+Les funcions $s_1(X_1, \ldots, X_n), \ldots, s_n(X_1, \ldots, X_n)$ s'anomenen \textbf{polinomis simètrics elementals} en $X_1, \ldots, X_n$, i són molt importants gràcies al:
+
+\textbf{Teorema de Waring}: Qualsevol polinomi simètric en $X_1, \ldots, X_n$ es pot escriure com a polinomi en els polinomis simètrics elementals.
+
+Per exemple, $X_1^2 + X_2^2 = s_1(X_1, X_2) - 2 s_2(X_1, X_2)$.
+
+La demostració del teorema de Waring és constructiva: ens dona un mètode per determinar el polinomi en els $s_k$. Podeu intuir-la fent algun exemple:
+
+\newpage
+
+\begin{Problem}
+  Expresseu $X_1^3 + X_2^3 + X_3^3 + X_4^3 + X_5^3$ com a polinomi en \\ $s_1(X_1, \ldots, X_5), \ldots, s_5(X_1, \ldots, X_5)$.
+\end{Problem}
+
+\[ \left( \vphantom{\sum_{i} X_i} \right. \underbrace{\sum_{i} X_i}_{s_1} \left. \vphantom{\sum_{i} X_i} \right)^3 = \sum_{i} X_i^3 + 3 \sum_{i \neq j} X_i^2 X_j + 6 \underbrace{\sum_{i < j < k} X_i X_j X_k}_{s_3} \implies \]
+\[ \implies \sum_{i} X_i^3 = s_1^3 - 3 \sum_{i \neq j} X_i^2 X_j - 6 s_3. \]
+
+Per expressar el sumatori del mig en termes dels polinomis simètrics elementals, donat que els polinomis generats pels polinomis simètrics elementals són una ``base'' dels polinomis simètrics degut al Teorema de Waring, igualarem el nostre polinomi a una combinació lineal d'aquests polinomis generats. Tenint en compte que el nostre polinomi és de grau 3, només caldrà considerar d'aquesta base els polinomis de grau 3, és a dir, $s_1^3$, $s_1 s_2$ i $s_3$. Aleshores, si anomenem $\tilde{F} := \sum_{i \neq j} X_i X_j$, tenim:
+\[ \tilde{F} = \alpha s_1^3 + \beta s_1 s_2 + \gamma s_3. \]
+Donat que $\tilde{F}$, $s_2$ i $s_3$ no tenen sumands de la forma $X_i^3$, sabem automàticament que $\alpha = 0$. Calculem $s_1 s_2$:
+\[ s_1 s_2 = \left( \sum_i X_i \right) \left( \sum_{j < k} X_j X_k \right) = \sum_i \left( \sum_{j < k} X_i X_j X_k \right) = \]
+\[ = \sum_i \left[ \left( \sum_{\substack{j < k \\ j, k \neq i}} + \sum_{\substack{j < k \\ j = i}} + \sum_{\substack{j < k \\ k = i}} \right) X_i X_j X_k \right] = \]
+\[ = \sum_i \left[ \sum_{\substack{j < k \\ j, k \neq i}} X_i X_j X_k + \left( \sum_{k > i} X_i^2 X_k + \sum_{k < i} X_k X_i^2 \right) \right] = \]
+\[ = \sum_i \left( \sum_{\substack{j < k \\ j, k \neq i}} X_i X_j X_k \right) + \sum_{i \neq k} X_i^2 X_k = \]
+\[ = \sum_i \left( \sum_{\substack{j < k \\ j, k \neq i}} X_i X_j X_k \right) + \tilde{F} = \]
+\[ = \left[ \left( \sum_{i < j < k} + \sum_{j < i < k} + \sum_{j < k < i} \right) X_i X_j X_k \right] + \tilde{F} = \]
+\[ = 3s_3 + \tilde{F}. \]
+
+Per tant:
+\[ \tilde{F} = \beta (3 s_3 + \tilde{F}) + \gamma s_3, \]
+d'on obtenim:
+\[ \begin{cases}
+  \beta = 1, \\
+  \gamma = -3,
+\end{cases} \]
+i, per tant:
+\[ \sum_{i \neq j} X_i^2 X_j \equiv \tilde{F} = s_1 s_2 - 3 s_3. \]
+
+Substituint al resultat anterior, obtenim:
+\[ \sum_i X_i^3 = s_1^3 - 3(s_1 s_2 - 3 s_3) - 6 s_3 = s_1^3 - 3 s_1 s_2 + 3 s_3. \]
+
+Una manera més ràpida hagués estat usar les fórmules de Girard-Newton que el meu grup va presentar dins del tema d'avaluació continuada de l'assignatura Estructures Algebraiques.
+
+\begin{Problem}
+  Demostreu que $\Delta(F)$ es pot escriure com a polinomi en \\
+  $s_1(X_1, \ldots, X_n), \, \ldots, \, s_n(X_1, \ldots, X_n), \, A_n$.
+\end{Problem}
+
+Demostrarem que el polinomi és simètric i, per tant, pel Teorema de Waring tindrem que es pot escriure com a polinomi en els polinomis simètrics elementals.
+
+Per veure que el polinomi és simètric, només cal comprovar que aplicant una transposició a les variables obtenim el mateix polinomi (ja que qualsevol permutació és una composició de permutacions).
+
+Considerem la permutació $\sigma$ que transposa les variables $X_l \leftrightarrow X_m$ i deixa fixes totes les altres. Aleshores:
+\[ \Delta(f)(X_{\sigma(1)}, \ldots, X_{\sigma(l)}, \ldots, X_{\sigma(m)}, \ldots, X_{\sigma(n)}) = \]
+\[ = \Delta(f)(X_1, \ldots, X_m, \ldots, X_l, \ldots, X_n) = a_n^{2n - 2} \prod_{i < j} (X_i - X_j)^2 = \]
+\[ = a_n^{2n - 2} \prod_{\mathclap{\substack{i < j \\ i, j \not\in \{ l, m \}}}} (X_i - X_j)^2 \prod_{\mathclap{i \not\in \{ l, m \}}} (X_i - X_m)^2 \prod_{\mathclap{i \not\in \{ l, m \}}} (X_i - X_l)^2 (X_m - X_l)^2 = \]
+\[ = a_n^{2n - 2} \prod_{\mathclap{\substack{i < j \\ i, j \not\in \{ l, m \}}}} (X_i - X_j)^2 \prod_{\mathclap{i \not\in \{ l, m \}}} (X_i - X_l)^2 \prod_{\mathclap{i \not\in \{ l, m \}}} (X_i - X_m)^2 (X_l - X_m)^2 = \]
+\[ = \Delta(f) (X_1, \ldots, X_l, \ldots, X_m, \ldots, X_n). \]
+
+El fet que el discriminant sigui un polinomi simètric en $X_1, \ldots, X_n$ és un fet rellevant, donat que és el que garanteix que està ben definit (independentment de l'equitatge de les arrels, sempre té el mateix valor).
+
+\newpage
+
+\begin{Problem}
+  Considereu el polinomi general de grau 2 sobre $K$:
+  \[ F(x) = a(X - X_1)(X - X_2) =: aX^2 + bX + c. \]
+  Descriviu $\Delta(F)$ en terme dels coeficients $a, b, c \in K(a, X_1, X_2)$ de $F$.
+\end{Problem}
+
+\[ \Delta(F) = a^2 (X_1 - X_2)^2 = a^2 [(X_1 + X_2)^2 - 4 X_1 X_2] = a^2(s_1^2 - 4 s_2). \]
+
+Com hem demostrat a l'apartat 1: $F = a(X^2 - s_1 X + s_2)$. Per tant, igualant els coeficients del polinomi $F$ tenim:
+\[ \begin{cases}
+  a = a, \\
+  b = - a s_1 \implies s_1 = -\frac{b}{a}, \\
+  c = a s_2 \implies s_2 = \frac{c}{a}.
+\end{cases} \]
+
+Per tant, podem escriure el discriminant com:
+\[ \Delta(F) = a^2\left( \frac{b^2}{a^2} - 4 \frac{c}{a} \right) = b^2 - 4ac. \]
+
+\begin{Problem}
+  Considereu el polinomi
+  \[ F(X) = (X - X_1)(X - X_2)(X + X_1 + X_2) =: X^3 + pX + q. \]
+  Descriviu $\Delta(F)$ en termes dels coeficients $p, q \in K(X_1, X_2)$ de $F$.
+\end{Problem}
+
+\underline{Nota:} alguns càlculs no estan inclosos aquí, ja que es tracta de la simple multiplicació de polinomis. Els càlculs complets es poden trobar a \url{https://drive.avm99963.com/s/M6tmjyz9b1xtdv7}.
+
+En aquest problema utilitzarem la següent notació per representar els monomis d'un polinomi homogeni de grau $d$ en $X_1, X_2$ (en el nostre cas $d = 6$ i elidirem la $d$):
+\[ q_d(n) := X_1^n X_2^{d - n}, \quad p_d(n) := q_d(n) + q_d(d - n) = X_1^n X_2^{d-n} + X_1^{d-n} X_2^n. \]
+
+El discriminant és:
+\[ \Delta (F) = [(X_1 - X_2) (X_1 + (X_1 + X_2)) (X_2 + (X_1 + X_2))]^2 = \]
+\[ = [(X_1 - X_2) (2 X_1 + X_2) (2 X_2 + X_1)]^2 = ... = \]
+\[ = 4 p(0) + 12 p(1) - 3 p(2) - 26 q(3). \]
+
+Com el discriminant és un polinomi homogeni de grau $d$, sabem que es podrà expressar com a combinació lineal de productes de polinomis simètrics elementals que tingui grau 6. En el nostre cas, tenim:
+\[ s_1 = X_1 + X_2 - (X_1 + X_2) = 0, \]
+\[ s_2 = X_1 X_2 + X_1 (- X_1 - X_2) + X_2 (- X_1 - X_2) = - X_1^2 - X_2^2 - X_1 X_2, \]
+\[ s_3 = - X_1 X_2 (X_1 + X_2). \]
+
+Com $s_1 = 0$, els únics productes de polinomis simètrics de grau 6 són $s_2^3$ i $s_3^2$. Les seves expressions són:
+\[ s_2^3 = - p(0) - 3 p(1) - 6 p(2) - 7 q(3), \]
+\[ s_3^2 = p(2) + 2 q(3). \]
+
+Aleshores, imposem $\Delta(F) = \alpha s_2^3 + \beta s_3^2$ i obtenim:
+\[ \begin{cases}
+  4 = - \alpha \implies \alpha = 4, \\
+  12 = -3 \alpha, \\
+  -3 = -6 \alpha + \beta \implies \beta = -3 - 24 = -27, \\
+  -26 = -7\alpha + 2\beta.
+\end{cases} \]
+
+Per tant:
+\[ \Delta(F) = 4 s_2^3 - 27 s_3^2 = 2^2 s_2^3 - 3^3 s_3^2. \]
+
+\section{Especialització de fórmules}
+
+Considerem ara un polinomi $f(X) = a_n X^n + \ldots + a_1 X + a_0 \in K[X]$, i siguin $\alpha_1, \ldots, \alpha_n \in \bar{K}$ les seves arrels, de forma que $f = a_n (X - \alpha_1) \cdots (X - \alpha_n)$.
+
+\begin{Problem}
+  Demostreu que l'aplicació
+  \[ \begin{array}{rrcl}
+    \varphi: & K[A_n, X_1, \ldots, X_n] & \longrightarrow & \bar{K} \\
+    & p(A_n, X_1, \ldots, X_n) & \longmapsto & p(a_n, \alpha_1, \ldots, \alpha_n)
+  \end{array} \]
+  és un morfisme d'anells.
+\end{Problem}
+
+Clarament $\varphi(1) = 1$. A més a més, si $p, q \in K[A_n, X_1, \ldots, X_n]$, tenim:
+\[ \varphi(p(A_n, X_1, \ldots, X_n) + q(A_n, X_1, \ldots, X_n)) = \varphi((p + q)(A_n, X_1, \ldots, X_n)) = \]
+\[ = (p + q)(a_n, \alpha_1, \ldots, \alpha_n) = p(a_n, \alpha_1, \ldots, \alpha_n) + q(a_n, \alpha_1, \ldots, \alpha_n) = \]
+\[ = \varphi(p(A_n, X_1, \ldots, X_n)) + \varphi(q(A_n, X_1, \ldots, X_n)), \]
+i finalment:
+\[ \varphi(p(A_n, X_1, \ldots, X_n) \cdot q(A_n, X_1, \ldots, X_n)) = \varphi((p \cdot q)(A_n, X_1, \ldots, X_n)) = \]
+\[ = (p \cdot q)(a_n, \alpha_1, \ldots, \alpha_n) = p(a_n, \alpha_1, \ldots, \alpha_n) \cdot q(a_n, \alpha_1, \ldots, \alpha_n) = \]
+\[ \varphi(p(A_n, X_1, \ldots, X_n)) \cdot \varphi(q(A_n, X_1, \ldots, X_n)). \]
+
+\newpage
+
+\begin{Problem}
+  Esteneu $\varphi$ a un morfisme $\tilde{\varphi}: K[A_n, X_1, \ldots, X_n][X] \to \bar{K}[X]$. Demostreu que la imatge del polinomi general de grau $n$ és $\tilde{\varphi}(F)$ i concloeu que $a_k = (-1)^k a_n s_k(\alpha_1, \ldots, \alpha_n)$.
+\end{Problem}
+
+Si anomenem $R := K[A_n, X_1, \ldots, X_n]$, és natural definir la següent aplicació:
+\[ \begin{array}{rccc}
+  \tilde{\varphi}: & R[X] & \longrightarrow & \bar{K}[X] \\
+  & r(x) = \sum_k r_k x^k & \longmapsto & r^\varphi(x) = \sum_k \varphi(r_k) x^k.
+\end{array} \]
+
+Comprovem que és un morfisme d'anells:
+
+\begin{enumerate}
+  \item \textbf{Unitat}:
+  \[ \tilde{\varphi}(1) = \varphi(1) = 1. \]
+
+  \item \textbf{Suma}: Siguin $r(x) = \sum_k r_k x^k, s(x) = \sum_k s_k x^k$. Aleshores:
+  \[ \tilde{\varphi}(r + s) = \sum_k \varphi(r_k + s_k) x^k = \sum_k (\varphi(r_k) + \varphi(s_k)) x^k = \tilde{\varphi}(r) + \tilde{\varphi}(s). \]
+
+  Notem que en el cas que els dos polinomis $r$ i $s$ són de grau diferent, prenem el sumatori des de $k = 0$ fins al major grau, i els coeficients no definits del polinomi de grau més petit els prenem com a 0.
+
+  \item \textbf{Producte}: Siguin $r(x) = \sum_k r_k x^k, s(x) = \sum_k s_k x^k$. Aleshores:
+  \[ \tilde{\varphi}(r \cdot s) = \sum_{i, j} \varphi(r_i s_j) x^i x^j = \sum_{i, j} \varphi(r_i) \varphi(s_j) x^i x^j = \tilde{\varphi}(r) \cdot \tilde{\varphi}(s). \]
+\end{enumerate}
+
+La imatge del polinomi de grau $n$ és $\tilde{\varphi}(F) = f$, ja que el que fa $\tilde{\varphi}(F)$ és aplicar $\varphi$ als coeficients de $F$. Els coeficients de $F$ són $A_k \in K[A_n, X_1, \ldots, X_n]$ tal com s'expressa en la introducció de la primera secció. Per tant, aplicar $\varphi$ als coeficients de $F$ és canviar les $A_n$ per $a_n$, i els $X_k$ per les $\alpha_k$, que és justament la relació entre $F$ i $f$.
+
+Per tant, com abans havíem demostrat que $A_k = (-1)^k A_n s_k(X_1, \ldots, X_n)$, aplicant $\tilde{\varphi}$ a cada coeficient i monomi del polinomi $F$, i igualant el resultat a $\tilde{\varphi}(F)$, obtenim:
+\[ a_k = \tilde{\varphi}(A_k) = \tilde{\varphi}((-1)^k A_n s_k(X_1, \ldots, X_n)) = (-1)^k \cdot \tilde{\varphi}(A_n) \cdot \tilde{\varphi}(s_k(X_1, \ldots, X_n)) = \]
+\[ = (-1)^k a_n s(\alpha_1, \ldots, \alpha_n). \]
+
+\begin{Problem}
+  Demostreu que si $H \in K[A_n, X_1, \ldots, X_n]$ és un polinomi simètric en $X_1, \ldots, X_n$, llavors $\varphi(H) \in K$.
+\end{Problem}
+
+Pel Teorema de Waring, sabem que podem expressar $H$ com a:
+\[ H = \sum_{k} a_k \prod_{i \in I_k} s_i(\{X_j\}), \]
+on estem abusant de la notació al productori per referir-nos a que iterem sobre subconjunts $I_k \subset \{1, \ldots, n\}$ diferents. També utilitzem la notació $s_i(\{ \{X_j\} \}) \equiv s_i(X_1, \ldots, X_n)$.
+
+Anomenem $F := A_n (X - X_1) \cdots (X - X_n) \in K(A_n, X_1, \ldots, X_n)[X] = L[X]$. Aleshores, a l'apartat 1 hem vist que:
+\[ [X^k] F(X) \equiv A_k = (-1)^k A_n \cdot s_k(\{X_j\}). \]
+Observem que aplicant $\varphi$ a ambdós costats de l'igualtat obtenim:
+\[ \varphi(A_n \cdot s_k(\{X_i\})) = \varphi((-1)^k A_k) \implies \]
+\[ \implies \varphi(A_n) \cdot \varphi(s_k(\{X_i\})) = \varphi((-1)^k) \varphi(A_k) \implies \]
+\[ \implies a_n \cdot s_k(\{\alpha_i\}) = (-1)^k a_k \implies \]
+\[ \implies s_k(\{\alpha_i\}) = (-1)^k \frac{a_k}{a_n}. \]
+
+Vegem ara que $\varphi(H) \in K$:
+\[ \varphi(H) = \sum_k \varphi(a_k) \prod_{i \in I_k} \varphi(s_i(\{X_j\})) = \sum_k a_k \prod_{i \in I_k} s_i(\{\alpha_j\}) \notate[X]{{}={}}{1}{\scriptstyle \text{Igualtat anterior}} \]
+\[ = \sum_k \underbrace{a_k}_{\in K} \prod \underbrace{(-1)^k}_{\in K} \underbrace{\frac{a_k}{a_n}}_{\in K} \in K. \]
+
+\begin{Problem}
+  Demostreu que $\Delta(f) = \tilde{\varphi}(\Delta(F))$. En particular, $\Delta(f) \in K$.
+\end{Problem}
+
+% NOTE: Això és més liós:
+%A l'apartat 4 hem demostrat que $\Delta(F)$ es pot escriure com a un polinomi en $s_1(\{X_j\}), \ldots, s_n(\{X_j\}), A_n$. Per tant:
+%\[ \Delta(F) = \sum_{i, J \subset \mathbb{N}, k} c_i \left( \prod_{j \in J} s_{j}(\{X_\gamma\}) \right) A_n^k \implies \]
+%\[ \implies \tilde{\varphi}(\Delta(F)) = \sum_{i, J \subset \mathbb{N}, k} \tilde{\varphi}}(c_i) \left( \prod_{j \in J} \tilde{\varphi}}(s_{j}(\{X_\gamma\})) \right) \tilde{\varphi}}(A_n)^k = \]
+%\[ = \sum_{i, J \subset \mathbb{N}, k} c_i \left( \prod_{j \in J} s_{j}(\{\alpha_\gamma\}) \right) a_n^k \]
+
+\[ \tilde{\varphi} (\Delta(F)) = \tilde{\varphi} \left( A_n^{2n - 2} \prod_{i < j} (X_i - X_j)^2 \right) = \tilde{\varphi}(A_n)^{2n - 2} \prod_{i < j} (\tilde{\varphi}(X_i) - \tilde{\varphi}(X_j))^2 = \]
+\[ = a_n^{2n - 2} \prod_{i < j} (\alpha_i - \alpha_j) = \Delta(f). \]
+
+\hrulefill
+
+Els problemes anteriors justifiquen que, si coneixem ``la fórmula'' del discriminant $\Delta(F)$ del polinomi general de grau $n$, podem calcular el discriminant de qualsevol polinomi de grau $n$ substituint els coeficients del polinomi donat en la fórmula. En particular, podem calcular $\Delta(f)$ sense conèixer les arrels de $f$.
+
+\newpage
+
+\begin{Problem}
+  Siguin $\alpha_1, \alpha_2, \alpha_3, \alpha_4, \alpha_5 \in \bar{\mathbb{Q}}$ les arrels del polinomi $X^5 + 2X^4 + X^3 - X^2 + 3X - 1$. Calculeu:
+  \[ \alpha_1^3 + \alpha_2^3 + \alpha_3^3 + \alpha_4^3 + \alpha_5^3. \]
+  (Indicació: no perdeu el temps intentant calcular \textit{algebraicament} les $\alpha_k$...)
+\end{Problem}
+
+A l'apartat 3 hem vist que (aplicant el morfisme $\varphi$):
+\[ \sum_i \alpha_i^3 = s_1^3 - 3 s_1 s_2 + 3 s_3. \]
+Però a l'apartat 1 (aplicant el morfisme $\tilde{\varphi}$) hem vist que per un polinomi $F$, els polinomis $(s_i(\{\alpha_j\}))_i$ i $A_n$ descriuen els coeficients del polinomi (utilitzem $n = 5$):
+\[ F = \cancel{A_5} (X^5 - s_1 X^4 + s_2 X^3 - s_3 X^2 + s_4 X - s_5), \]
+i igualant coeficients amb el nostre polinomi obtenim:
+\[ \begin{cases}
+  s_1 = -2, \\
+  s_2 = 1, \\
+  s_3 = 1, \\
+  s_4 = 3, \\
+  s_5 = 1.
+\end{cases} \]
+
+Substituint aquests valors a la fòrmula de la suma, obtenim:
+\[ \sum_{i = 1}^5 \alpha_i^3 = (-2)^3 - 3 (-2) \cdot 1 + 3 \cdot 1 = 1. \]
+
+\end{document}
