Solution (source code)

= Solution

For every <ultrafilter> $\mathcal H$ on $X$, its image is an <ultrafilter> on the <compact space> $Y$, so it has a limit. That limit is unique because $Y$ is <Hausdorff>: distinct limits would have disjoint <neighborhoods> both belonging to the same <proper filter>. Therefore $\Lambda$ is well-defined. Since $f[X]$ is <dense>, every $b\in Y$ lies in $\overline{f[X]}$. Part (a), with $A=X$, supplies an <ultrafilter> mapping to $b$, proving <surjectivity>.

Suppose disjoint <subsets> have disjoint image <closures>. If $\mathcal H\ne\mathcal K$, choose $A\in\mathcal H$ not in $\mathcal K$; the <ultrafilter> criterion gives $X\setminus A\in\mathcal K$. Part (a) gives
$$
\Lambda(\mathcal H)\in\overline{f[A]},\qquad
\Lambda(\mathcal K)\in\overline{f[X\setminus A]}.
$$
The two <closures> are disjoint by assumption, so the limits differ. Thus $\Lambda$ is <injective>.

Conversely, suppose $\Lambda$ is <injective> and disjoint $A,B\subseteq X$ had a common point $b$ in their image <closures>. Part (a) would supply <ultrafilters> $\mathcal H,\mathcal K$ containing $A,B$ respectively, both with image limit $b$. They must be distinct, since a <proper filter> cannot contain the disjoint <sets> $A$ and $B$ simultaneously. This contradicts <injectivity>. Hence
$$
\boxed{\Lambda\text{ injective}\quad\Longleftrightarrow\quad
\overline{f[A]}\cap\overline{f[B]}=\varnothing\text{ whenever }A\cap B=\varnothing.}
$$