If $f \colon \mathbb{R}^n \rightarrow \mathbb{R}$ is differentiable and vanishing, it has $0$ gradient somewhere. I'm interested in ideas for improving and fixing the proof I wrote for the following theorem:

Let $f \colon \mathbb{R}^n \to \mathbb{R} $ be differentiable, and $ \lim_{\| x \| \to \infty} f(x) = 0 $. Then $\nabla f(x) = 0 $ for some $x \in \mathbb{R}^n$.

Here's the idea of the proof. First, since $f$ is differentiable, it is continuous.
As  $ \lim_{\| x \| \to \infty} f(x) = 0 $, $\forall \varepsilon > 0, \exists r \in \mathbb{R} : |f(x) - 0| < \varepsilon$ whenever $\| x \| > r$.
If we choose $D = \{x \in \mathbb{R}^n : \| x \| \leq r \}$, we can use the theorem that states that all continuous functions are bounded inside closed sets. In other words, there's a supremum of $|f(x)|$ in $D$.
Then we just look at the cases: if $f(x) = 0$, so its gradient is always 0 and we're done.
If $f$ varies in the set $D$, there exist $a,b \in D$ such that $f(a) \neq f(b)$, ie. $\exists \varepsilon_2 > 0$ so $| f(a) - f(b) | > \varepsilon_2 $.
If we choose $\varepsilon_2 > \varepsilon$, $|f(x)|$ attains greater values in $D$ than outside it, and if we choose $c$ to be a point such that $$f(c) = \sup{\{f(x) : x \in D\}}$$ Then $|f(x)| \leq |f(c)|\quad \forall x \in D$ and as $f$ is differentiable, $\nabla f(c) = 0$.
There are more than a few issues I have with the formulation of the proof. First, "$f$ attains greater values in $D$ than outside it" seems a little ambiguous. Then the choosing of $c$ in a convenient way after having talked about it at such length... Additionally, I'd like to use the definition of differentiability that states that if $f$ is differentiable, it can be represented as 
$$f(x_0+h) = f(x_0) + Df(x_0)h + \varepsilon(h)\| h \|,\quad h \in \mathbb{R}^n $$ 
where $\varepsilon(h)\| h \| \to 0$ as $\| h \| \to 0$, and where $Df(x)$ is the gradient in this case, or the Jacobian in a more general case. I'm almost certain you could bound the gradient $Df(c)$ to $0$ somehow using that definition, because it gives you a semi-explicit expression, instead of the verbal hand-waving I'm facing.
There might've also been a method much simpler than this, but I couldn't exactly employ the mean value theorem easily here with the whole open domain. Maybe using the $D$ I defined there would've worked.
 A: Suppose $f$ is not identically zero, say, $f(x_{0})\ne 0$, choose a big $M>0$ such that $|x_{0}|<M$ and $|f(x)|<|f(x_{0})|$ for all $|x|>M$.
Now $|f(x)|\leq\max_{|x|\leq M}|f(x)|:=|f(c)|$ for all $|x|\leq M$.
Then for all $x$, we have $|f(x)|\leq\max\{|f(x_{0})|,|f(c)|\}$. Since $|x_{0}|<M$, then the later maximum is attained at $|f(c)|$. So $|f|$ has global maximum at $c$, it is not hard to see that it is also a local extremum for $f$, and hence $\nabla f(c)=0$.
A: I'll assume $f$ is bounded since you seem to get that part.
Let $\alpha = \inf_{x \in \mathbb{R}^n} f(x)$ and $\beta = \sup_{x \in \mathbb{R}^n} f(x)$. 
Then there are sequences $\{x_k\}$ and $\{y_k\}$ in $\mathbb{R}^n$ such that $\alpha = \lim_{k \rightarrow \infty} f(x_k)$ and $\beta = \lim_{k \rightarrow \infty} f(y_k)$.
If both $x_k$ and $y_k$ are unbounded, then $\alpha = \beta = 0$, so that $f=0$.
Suppose $x_k$ bounded. Then it has a convergent subsequence $x_{k_p} \rightarrow x_{\alpha}$. Hence, by continuity, $\alpha = f(x_{\alpha})$.
If $y_k$ is bounded we conclude, analogously, that $\beta = f(x_{\beta})$.
Therefore, $f$ always has a global minimum/maximum and at this point, $\nabla f$ is zero.
