proving existence of diffeomorphism In my hand out of manifold, I found the following lemma but there is no proof there:
Let $U\subseteq\mathbb{R}^m$ be open and pick some $a\in U$. Suppose that $f:U\mapsto \mathbb{R}^n$ is a smooth function such that $df_a$ is full rank $m\leq n$. Then there exists an open subset $V$ of $\mathbb{R}^n$ with $f(a)\in V$, an open subset $U^\prime\subseteq U$ with $a\in U^\prime$ and $f(U^\prime)\subseteq V$, an open subset $O\subseteq \mathbb{R}^{n-m}$, and a diffeomorphism $\theta:V\mapsto U^\prime\times O$ such that
$$
\theta(f(x_1,\dots,x_m))=(x_1,\dots,x_m,0,\dots,0)
$$
for all $x_1,\dots,x_m)\in U^\prime$.
I tried to prove the above lemma as follows:
Since $f$ smooth so continuous. Fix $\epsilon>0$, then we can choose $\delta>0$ such that $f(N_{a}(\delta))\subset N_{f(a)}(\epsilon)$. Moreover, since $df_a$ is full rank then we can choose this $\epsilon$ small enough such that $f|_{N_{a}(\delta)}$ (function $f$ restricted on $N_{a}(\delta)$) is injective. I guess that we can choose $V=N_{f(a)}(\epsilon)$ and $U^\prime=N_{a}(\delta)$. Is my guess correct? Moreover, how to prove the existence of $\theta$ and define $O$? Thank you in advance.
 A: This theorem is a variant of the Implicit/Inverse function theorems. If you look up the proofs of those theorems, I think you'll find that this one follows easily. You've certainly made generally correct first few steps in your attempt at a proof, although there are some problems. 
You write:
"can choose $\delta >0$ such that $N_a(\delta) \subset N_{f(a)}(\epsilon)$."
That should be:
"can choose $\delta >0$ such that $f(N_a(\delta)) \subset N_{f(a)}(\epsilon)$."
Also, you should choose $\delta$ so small that $N_a(\delta) \subset U$, or you'll have a hard time proving $U' \subset U$. 
For the rest of the proof --- look up the implicit and inverse function theorems. (Or read on.)
Added in response to comments: a proof from Munkres: 
$$ \newcommand{\RR}{{\mathbb R}}$$
Thm: Let $U$ be an open subset of $\RR^m$; let $f : U \to \RR^n$ be a map of class $C^r$ such that $f$ has rank $m$ at the origin, and $f(0) = 0$.  Then there is a $C^r$ diffeomorphism $g$ of a neighborhood of the origin in $\RR^n$ onto another such that 
$$
gf(x^1, \ldots, x^m) = (x^1, \ldots, x^m, 0, \ldots, 0).
$$
Note that in your case, $r = \infty$, and rather than having $f(0) = 0$, you've got a more general $f$. You can fix this by defining $h(x) = f(x+a) - f(a)$; the function $h$ now satisfies the hypotheses of Munkres, and you can work from there.
Also note that Munkres uses superscripts for coordinate-indexing.
Proof: We may assume that the submatrix $\dfrac{\partial (f^1, \ldots, f^m)}{\partial(x^1, \ldots, x^m)}$ of $Df$ is nonsingular at zero, since this condition may be obtained by following $f$ byu a suitable non-singular linear map. 
Define $F : U \times \RR^{n-m} \to \RR^n$ by the equation
$$
F(x^1, \ldots, x^n) = f(x^1, , \ldots, x^m) + (0,\ldots, 0, x^{m+1}, \ldots, x^n). 
$$
Then $F$ has rank $n$ at zero, for $DF$ has the block form 
$$
\begin{bmatrix}
& | & 0\\
\partial f/ \partial x & | &  \\
  & | & I  
\end{bmatrix}
$$
Hence $F$ has a local inverse $g$ (Ed: By the inverse function theorem). Now $g$ is a $C^r$ diffeeomorphism of a neighborhood of the origin onto itself, and 
$$
gf(x^1, \ldots, x^m) = g(F(x^1, \ldots, x^m, 0, \ldots, 0)) = (x^1, \ldots, x^m, 0, \ldots, 0).
$$
And that's the proof!
