An upper bound $u$ is the supremum of $A$ if and only if for all $\epsilon > 0$ there is an $a \in A$ such that $u-\epsilon < a$ Problem:  
Let $u$ be an upper bound of non-empty set $A$ in $\mathbb{R}$.
Prove that $u$ is the supremum of $A$
if and only if for all $\epsilon > 0$ there is an $a \in A$ such that
$u-\epsilon < a$.
Solution:  
(i) $\implies$ (ii) Suppose $u$ is the supremum of $A$, then this is obvious. Suppose this were not true. Then, $\forall a \in A$ and $\forall \epsilon > 0$, we have $u - \epsilon > a$. This contradicts the fact that $u$ is the least upper bound, as we could take $m = u - \epsilon$ to be a smaller upper bound for each $\epsilon$. \
(ii) $\implies$ (i) Suppose there exists a $u$ such that for all $\epsilon > 0$, $\exists a \in A$ such that $u - \epsilon < a$.  If this is satisfied, I claim that $u \geq a$ for each $a \in A$, and is the smallest such $u$, and thus $u = \sup A$. This follows directly from the definition of the supremum. Namely, take $a \in A$ and write $x=\sup A$. We may choose $\epsilon > 0$ such that $x-\epsilon < a$. We have two cases. If $a \in B_{\epsilon} (x)$, then $x-\epsilon < a$, where $B_{\epsilon}(x)$ is the open ball around $x$ in $\mathbb{R}$. If $a \notin B_{\epsilon} (x)$, we may choose $n>1$ such that $a \in B_{n\epsilon}(x)$, implying $x-n\epsilon < a$. Thus we have shown that, for a supremum $x$, we may find $\epsilon > 0$ for each $a \in A$ such that $x-\epsilon < a$, which is equivalent to finding $a \in A$ for all $\epsilon > 0$. Ergo, $u$ is the supremum of $A$.    
Is this a correct proof?
 A: You try to prove the first part via contradiction, however the proper negation of the sentence should be 'there exists $\epsilon >0$ such that $u-\epsilon \ge a$ for all $a$.', not 'for all $\epsilon$, $u-\epsilon \ge a$'. You have the right idea for the rest of that part though.
For the second part you write:

Suppose there exists a $u$ such that for all $\epsilon > 0$, $\exists a \in A$ such that $u - \epsilon < a$.  If this is satisfied, I claim that $u \geq a$ for each $a \in A$, and thus $u = \sup A$.

This isn't quite correct, you still need the assumption $u$ is an upper bound of $A$ (otherwise take $u=0.5$, $A=[0,1]$). Even if you did make this assumption the rest of your argument isn't quite satisfactory. You seem to say:


*

*Let $x$ be the supremum and $a\in A$, then you can choose $\epsilon$ such that $x-\epsilon < a$. That's fine, though maybe call $x$ $u$ for clarity.

*You say you have two cases, but you have chosen $\epsilon$ such that $a\in B_{\epsilon}(x)$, so only the first case applies.

*You conclude, but have not completed the proof. Namely you have shown 'for all $a$ there exists $\epsilon$', which is different to the goal which is 'for all $\epsilon$ there is an $a$'.


Thus the second part of your proof is incorrect.
A: As Andrew pointed out, there are some errors in your proof, specially in the second part. Here is a slightly different approach.
Let $u$ be an upper bound of $A$.
$(i)\Rightarrow (ii)$. $\forall \epsilon >0$, we have $u-\epsilon<u$. Since $u$ is the least upper bound, $u-\epsilon$ can not be an upper bound, and thus $\exists a\in A$ such that $u-\epsilon < a$.
$(i)\Leftarrow (ii)$. You have to show that $u$ is the least upper bound. To see this, take any upper bound $v$ and show that $u\leq v$. Indeed, $\forall \epsilon>0$, we can find $a\in A$ such that $u-\epsilon < a \leq v$. In particular $u-\epsilon < v$. Since this is true $\forall \epsilon > 0$, it must be $u\leq v$.
