If I have a grammar

S -> aSbS|epsilon

With the language it generates represented by L and I want to prove that for all strings w = L - {epsilon}, w can be decomposed to w = a u b v where u and v exist in L, does the following proof make sense?

If w has the same number of a's and b's, then there is a certain b in the string w where the number's of a's and b's at that point match. Then w can be generated by the production rule S->aSbS where the first S then can be used to derive u and the second S can be used to drive v.

Is my proof okay? Am I proving enough or can I make this more concrete? Any suggestions would be appreciated.