### What are these extra terms in symmetric polynomial calculations?

I am trying to calculate the discriminant of the cubic using symmetric polynomials, here is my attempt:

```
P = PolynomialRing(QQ, 'x', 3)
x = P.gens()
S = SymmetricFunctions(QQ)
e = SymmetricFunctions(QQ).e()
def nice_symmetric_poly(coeffs, u):
v = var(coeffs)
return sum(x[1]*product(v[i] for i in x[0]) for x in list(u))
d = (x[0]-x[1])*(x[0]-x[2])*(x[1]-x[2])
u = e.from_polynomial(d^2)
nice_symmetric_poly('a b c d e', u)
```

This gives me u:

```
e[2, 2, 1, 1] - 4*e[2, 2, 2] - 4*e[3, 1, 1, 1] + 18*e[3, 2, 1] - 27*e[3, 3] - 8*e[4, 1, 1] + 24*e[4, 2]
```

and the nice polynomial version:

```
b^2*c^2 - 4*b^3*d - 4*c^3 + 18*b*c*d - 8*b^2*e - 27*d^2 + 24*c*e
```

but I was expecting the result from here https://www.johndcook.com/blog/2019/07/14/discriminant-of-a-cubic/

```
Δ = 18bcd – 4b³d + b²c² – 4c³ – 27d².
```

I don't understand why these "e" terms exist: - 8*b^2*e + 24*c*e

and why is there anything with a e[4] in it inside `u`

.

Thank you for any insight into this problem.