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}
