Prove that if $f(x)=f(y)$ for all $f\in X^{*},$ then $x=y$

The statement is true, but the proof is not. In the proof, it is implicitly assumed that if $f\in X^*$, then $\ker f=\{0\}$, which is not true in general (think of the zero functional).

A correct proof can be constructed using the Hahn–Banach theorem. In particular, if $x-y\neq 0$, then there exists some $f\in X^*$ such that $f(x-y)=\|x-y\|\neq 0$, so that $f(x)\neq f(y)$. For details, see Theorem 5.8(b) in Folland (1999, p. 159).


Your proof is not correct, because, unles $\dim X\leqslant1$, $\ker f$ cannot possibly be $\{0\}$.

Let $z=x-y$ and let $Z$ be the vector space spanned by $z$. Consider the linear map$$\begin{array}{rccc}g\colon&Z&\longrightarrow&\mathbb R\\&\lambda z&\mapsto&\lambda.\end{array}$$Then $g$ is bounded and therefore, by the Hahn-Banach theorem, you can extend it to an element $f\in X^*$. But\begin{align}f(x)-f(y)&=f(x-y)\\&=f(z)\\&=g(z)\\&=1\\&\neq0.\end{align}