Let $\mathbf B$ be a separable Banach space. Show that there is a countable set $S\subset \mathbf B ^* $ such that for all $0\neq x \in \mathbf B$, there are infinitely many functionls $f\in S$ such that $f(x)\neq0$
I'm struggling to find a proof of this. I wasn't able to find any Hahn-Banach related theorem that deals with separable spaces, although the question is in the chapter about the Hahn-Banach theorem and its corollaries.
Let $E$ be a countable sense subset of the unit sphere of $\mathbf B$. For each element $x\in E$ pick a unit-norm functional $f_x$ such that $f_x(x)>1/2$ (the existence of $f_x$ follows from Hahn-Banach). Consider the set $\tilde S=\{f_x:x\in E\}$.
Given $x\in \mathbf B\setminus \{0\}$, let $y=x/\|x\|$. The sphere of radius $1/2$ with center $y$ contains some $z\in E$. By the reverse triangle inequality $$|f_z(y)| = |f_z(z) - f_z(z-y) |\ge |f_z(z)| - |f_z(z-y)| \ge 1 - \|z-y\| > \frac12 > 0$$ hence $f_z(x)\ne 0$.
So this gives one functional that is nonzero on $x$. To have infinitely many, one can take $$S = \{nf:f\in \tilde S, \ n\in\mathbb{N}\}$$ which is still countable.
Remark
It is tempting to think that the set $\tilde S$ already works as $S$, because the sphere of radius $1/2$ with center $y$ contains infinitely many distinct elements $z\in E$. However, we don't know if the corresponding $f_z$ are distinct.