Solution (source code)

= Solution

Suppose first that $U$ is not contained in $(S^\lambda)^\perp$. Since <polytabloids> span $S^\lambda$, there exist $u\in U$ and a tableau $t$ with $\langle u,e_t\rangle\ne0$. The <column antisymmetrizer> identity from the preliminaries gives
$$
\kappa_tu=\langle u,e_t\rangle e_t\in U.
$$
Therefore $e_t\in U$. Because $U$ is an $S_n$-submodule, it contains all translates $ge_t=e_{gt}$, and these span the <Specht module>. Hence $S^\lambda\subseteq U$. If the initial supposition fails, $U\subseteq(S^\lambda)^\perp$. This proves the <James submodule theorem>
$$
\boxed{U\supseteq S^\lambda\quad\text{or}\quad U\subseteq(S^\lambda)^\perp.}
$$
Now let $W$ be a submodule of $S^\lambda$. Apply the dichotomy to $W\subseteq M^\lambda$. Either $W=S^\lambda$, or $W\subseteq S^\lambda\cap(S^\lambda)^\perp$. Positivity of the Hermitian form gives $S^\lambda\cap(S^\lambda)^\perp=\{0\}$: a vector in this intersection has squared norm zero. The same intersection is zero for the bilinear form by the agreement of complements explained above. Since $S^\lambda\ne0$, the only submodules are $0$ and itself. Therefore
$$
\boxed{S^\lambda\text{ is simple over }\mathbb C.}
$$
This use of characteristic zero and nondegeneracy is why the conclusion does not automatically extend to every modular <Specht module>.