Dummit & Foote's Abstract Algebra, 3rd Edition, Exercise 0.1.7 I feel awkward about my reasoning. Is it sound?

Let $f:A\to B$ be a surjective map of sets. Prove that the relation
$$a\sim b\quad\text{if and only if}\quad f(a)=f(b)$$
is an equivalence relation whose equivalence classes are the fibers of
  $f$.



*

*The relation is reflexive because $f(a)=f(a)$ for all $a\in A$.

*The relation is symmetric because $f(a)=f(b)\implies f(b)=f(a)$ for all $a,b\in A$.

*The relation is transitive because $f(a)=f(b)\land f(b)=f(c)\implies f(a)=f(c)$ for all $a,b,c\in A$.


Therefore, the relation is an equivalence relation.
Let $Q$ be a fiber of $f$. Then
$$Q=\{a\in A:f(a)=q\},$$
for some $q\in B$. Because $f$ is surjective, there is an $h:B\to A$ such that $f\circ h=\text{id}_B$. Therefore, $h(q)=p\implies q=f(p)$, for some $p\in A$. It follows that
$$Q=\{a\in A:f(a)=f(p)\}=\{a\in A:a\sim p\},$$
which is the equivalence class of $p$.
Therefore, the equivalence classes of the relation are the fibers of $f$.

Your proof is fine (maybe a bit formal!) except it says "for some $p \in A$" which makes it seem like you are picking a $p$, when in fact $p$ is defined to be $h(q)$. I would rewrite that sentence

Therefore, $h(q)=p \Rightarrow q=f(p)$, for some $p\in A$.

to say 

Write $p$ for $h(q)$. Then $q = f(p)$.

