Is my proof for a context free language correct? Same number of a's as b's
First of all, you've never said what exactly you are trying to prove. From the title, one might guess that you're trying to prove that the given grammar generates the language $L = \{ w \in (a+b)^* : \#_a(w) = \#_b(w) \}$. However, it seems that you are only trying to prove that every word generated by the grammar is in $L$. (The other direction is even harder.)

In order to prove your claim, you strengthen the claim, trying to prove the following:


If $S$ generates $w$ then for some $m \in \mathbb{N}$, $\#_a(w) = \#_b(w) = m$.
If $A$ generates $w$ then for some $m \in \mathbb{N}$, $\#_a(w) = m + 1$ and $\#_b(w) = m$.
If $A$ generates $w$ then for some $m \in \mathbb{N}$, $\#_a(w) = m$ and $\#_b(w) = m + 1$.


In order to prove the strengthened claim, you need to prove by induction some claim $P(m)$. However, you never state what $P(m)$ is. Your "inductive hypothesis" is actually the statement that you're trying to prove by induction. One way to interpret your inductive hypothesis is the following: $P(m)$ states that


If $S$ generates $w$ then $\#_a(w) = \#_b(w) = m$.
If $A$ generates $w$ then $\#_a(w) = m + 1$ and $\#_b(w) = m$.
If $A$ generates $w$ then $\#_a(w) = m$ and $\#_b(w) = m + 1$.


However, this is simply false. You need to come up with a predicate $P(m)$ that you could prove by induction. Once you've done that, you can check whether your proof works.

The rest of your proof contains several other problems, but let's start with the more major problems mentioned above.