[proofplan]
We prove completeness directly from the defining properties of a closure operator. First we show that arbitrary intersections of closed sets are closed, including the empty intersection, and then verify that the intersection has the greatest-lower-bound property under inclusion. Next we show that the closure of an arbitrary union is closed, is an upper bound for the family, and is contained in every closed upper bound. These two constructions give meets and joins for every indexed family, so the poset of closed sets is a complete lattice.
[/proofplan]
[step:Show arbitrary intersections of closed sets are closed]
Let $I$ be a set, and let $(F_i)_{i\in I}$ be a family of elements of $\mathcal C$. Define the subset $M\subset E$ by
\begin{align*}
M=\bigcap_{i\in I}F_i,
\end{align*}
where $M=E$ if $I=\varnothing$.
First suppose $I\neq\varnothing$. For each $i\in I$, we have $M\subset F_i$. By monotonicity of $c$,
\begin{align*}
c(M)\subset c(F_i).
\end{align*}
Since $F_i\in\mathcal C$, we have $c(F_i)=F_i$, and therefore $c(M)\subset F_i$ for every $i\in I$. Hence
\begin{align*}
c(M)\subset \bigcap_{i\in I}F_i=M.
\end{align*}
By extensivity of $c$, we also have $M\subset c(M)$. Thus $c(M)=M$, so $M\in\mathcal C$.
If $I=\varnothing$, then $M=E$. Extensivity gives $E\subset c(E)$, while $c(E)\subset E$ because $c(E)$ is a subset of $E$. Hence $c(E)=E$, so again $M\in\mathcal C$.
[guided]
We want to prove that the proposed meet is actually an element of the poset $\mathcal C$. Since elements of $\mathcal C$ are precisely the subsets fixed by $c$, the task is to prove that the intersection is fixed by $c$.
Let $I$ be a set, let $(F_i)_{i\in I}$ be a family of closed subsets, and define
\begin{align*}
M=\bigcap_{i\in I}F_i.
\end{align*}
If $I\neq\varnothing$, then by the definition of intersection, $M\subset F_i$ for every $i\in I$. The closure operator is monotone, so from $M\subset F_i$ we obtain
\begin{align*}
c(M)\subset c(F_i)
\end{align*}
for every $i\in I$. Since each $F_i$ is closed, $c(F_i)=F_i$. Therefore
\begin{align*}
c(M)\subset F_i
\end{align*}
for every $i\in I$. Being contained in every $F_i$ is exactly being contained in their intersection, so
\begin{align*}
c(M)\subset \bigcap_{i\in I}F_i=M.
\end{align*}
The reverse inclusion comes from extensivity of the closure operator, applied to the subset $M\subset E$:
\begin{align*}
M\subset c(M).
\end{align*}
Combining the two inclusions gives $c(M)=M$, so $M$ is closed.
The empty family needs a separate check because the argument “for every $i\in I$” gives no closed sets to compare with. By convention, the empty intersection is $E$. Extensivity gives $E\subset c(E)$, and because $c(E)$ is by definition a subset of $E$, we also have $c(E)\subset E$. Hence $c(E)=E$, so the empty intersection is closed as well.
[/guided]
[/step]
[step:Verify that the intersection is the meet]
Let $M=\bigcap_{i\in I}F_i$, with $M=E$ if $I=\varnothing$. By the previous step, $M\in\mathcal C$.
For every $i\in I$, the definition of intersection gives $M\subset F_i$, so $M$ is a lower bound of the family $(F_i)_{i\in I}$ in the inclusion order. Now let $H\in\mathcal C$ be any lower bound of the same family, meaning that $H\subset F_i$ for every $i\in I$. Then, by the defining property of intersection,
\begin{align*}
H\subset \bigcap_{i\in I}F_i=M.
\end{align*}
If $I=\varnothing$, the same conclusion reads $H\subset E=M$, which holds for every $H\subset E$. Thus $M$ is the greatest lower bound of the family in $\mathcal C$.
[/step]
[step:Show the closure of the union is a closed upper bound]
Define the subset $U\subset E$ by
\begin{align*}
U=\bigcup_{i\in I}F_i,
\end{align*}
where $U=\varnothing$ if $I=\varnothing$, and define $J\subset E$ by
\begin{align*}
J=c(U).
\end{align*}
By idempotence of $c$,
\begin{align*}
c(J)=c(c(U))=c(U)=J.
\end{align*}
Thus $J\in\mathcal C$. For every $i\in I$, we have $F_i\subset U$, and extensivity gives $U\subset c(U)=J$. Hence $F_i\subset J$ for every $i\in I$, so $J$ is an upper bound of the family. If $I=\varnothing$, this upper-bound condition is vacuous, and $J=c(\varnothing)$ is still closed by idempotence.
[/step]
[step:Verify that the closure of the union is the join]
Let $J=c(U)$, where $U=\bigcup_{i\in I}F_i$. By the previous step, $J\in\mathcal C$ and $J$ is an upper bound of the family.
Let $G\in\mathcal C$ be any upper bound of the family $(F_i)_{i\in I}$, so $F_i\subset G$ for every $i\in I$. Then
\begin{align*}
U=\bigcup_{i\in I}F_i\subset G.
\end{align*}
By monotonicity of $c$,
\begin{align*}
c(U)\subset c(G).
\end{align*}
Since $G\in\mathcal C$, we have $c(G)=G$. Therefore
\begin{align*}
J=c(U)\subset G.
\end{align*}
If $I=\varnothing$, then $U=\varnothing\subset G$, so the same monotonicity argument gives $c(\varnothing)\subset G$. Thus $J$ is contained in every closed upper bound, and hence $J$ is the least upper bound of the family in $\mathcal C$.
[/step]
[step:Conclude completeness of the lattice of closed sets]
For every set $I$ and every family $(F_i)_{i\in I}$ in $\mathcal C$, the previous steps construct a meet
\begin{align*}
\bigwedge_{i\in I}F_i=\bigcap_{i\in I}F_i
\end{align*}
and a join
\begin{align*}
\bigvee_{i\in I}F_i=c\left(\bigcup_{i\in I}F_i\right).
\end{align*}
Therefore every indexed family of elements of $\mathcal C$ has both a meet and a join. Hence $\mathcal C$, ordered by inclusion, is a complete lattice.
[/step]