Let M be an $\epsilon$-NFA and let $S\subseteq Q$. Prove $\epsilon (S) = \epsilon (\epsilon (S))$
Your definition of $\epsilon$-closure is quite problematic. Here is a better formulation:


  $\epsilon(S)$ is the intersection of all sets $T \subseteq Q$ such that (i) $T \supseteq S$ and (ii) if $q \in T$ then $\delta(q,\epsilon) \subseteq T$.


Here is a series of claims which imply $\epsilon(S) = \epsilon(\epsilon(S))$.

Claim 1. $\epsilon(S) \supseteq S$.

Proof. $\epsilon(S)$ is the intersection of sets containing $S$, and so contains $S$.

Claim 2. If $q \in \epsilon(S)$ then $\delta(q,\epsilon) \subseteq \epsilon(S)$.

Proof. If $q \in \epsilon(S)$ then $q$ belongs to all sets $T$ in the definition. Property (ii) implies that all of these sets contain $\delta(q,\epsilon)$, and so $\epsilon(S)$ contains $\delta(q,\epsilon)$.

Claim 3. $\epsilon(\epsilon(S)) \supseteq \epsilon(S)$.

Proof. Follows directly from Claim 1.

Claim 4. $\epsilon(\epsilon(S)) \subseteq \epsilon(S)$.

Proof. $\epsilon(S)$ satisfies the $T$-conditions for $\epsilon(S)$: (i) is trivial, and (ii) follows from Claim 2.

Claim 5. $\epsilon(\epsilon(S)) = \epsilon(S)$.

Proof. Follows from Claim 3 and Claim 4.