Corollary of Inverse Function Theorem?

Recall the inverse function theorem:

Theorem.

Lef $U\subseteq \mathbb R^n$ be an open subset, $p\in U$ and $f\in C^1(U, \mathbb R^n)$. If $Df(p)\in \textrm{Aut}(\mathbb R^n)$ there exists an open subset $V\subseteq U$ containing $p$ such that $F(V)\subseteq \mathbb R^n$ is open and $F|_V:V\longrightarrow F(V)$ is a $C^1$ diffeomorphism.

Using this I'd like to prove the following result:

Corollary.

Let $U\subseteq \mathbb R^n$ be an open subset, $0\in U$ e $f\in C^1(U, \mathbb R^m)$ such that $f(0)=0$. Suppose $\textrm{rank}(Df(0))=n$. Then there are open subsets $V, W\subseteq \mathbb R^m$ containing $0$ and there is a $C^1$ diffeomorphism $g:V\longrightarrow W$ such that $$gf(x_1, \ldots, x_n)=(x_1, \ldots, x_n, 0, \ldots, 0).$$

I know this is a classical result but I'm not glad with the proofs I've seen.

Thanks

First I'll rewrite the corollary in a precise form. For this, in what follows I'll consider the continuous maps $\pi:\mathbb R^m\longrightarrow \mathbb R^n$ and $\jmath:\mathbb R^n\longrightarrow \mathbb R^m$ given by $$\pi(x_1, \ldots, x_m):=(x_1, \ldots, x_n)\quad \textrm{and}\quad \jmath(x_1, \ldots, x_n):=(x_1, \ldots, x_n, 0, \ldots, 0).$$
Notice $\pi$ is surjective and $\jmath$ is injective. This will be important later.
Let $U\subseteq \mathbb R^n$ be an open set and $f\in C^1(U, \mathbb R^m)$. Suppose $p\in U$ is such that $Df(p)$ is injective. There are open sets $V\subseteq U$, $W\subseteq \mathbb R^m$ (indeed $f(V)\subset W$) containing $p$ and $f(p)$, respectively, and a $C^1$ diffeomorphism $g:W\longrightarrow \jmath(V)$ such that $g\circ f|_V=\jmath|_V$.
Proof. Since $\pi$ is continuous and $U\subseteq \mathbb R^n$ is open $\pi^{-1}(U)$ is open in $\mathbb R^m$. Define $F:\pi^{-1}(U)\longrightarrow \mathbb R^m$ setting $$F(x_1, \ldots, x_m):=f(x_1, \ldots, x_n)+(0, \ldots, 0, x_{n+1}, \ldots, x_m).$$ Since $\pi$ is surjective: $$(x_1, \ldots, x_n)=\pi(x_1, \ldots, x_m)\in \pi(\pi^{-1}(U))=U.$$ Furtheremore, $F\in C^1(\pi^{-1}(U), \mathbb R^m)$. It is easy to see $DF(\jmath(p))$ is an isomorphism (after reordering basis). By the IFT there is an open set $V^\prime\subseteq \pi^{-1}(U)$ containing $\jmath(p)$ such that $$F|_{V^\prime}:V^\prime\longrightarrow F(V^\prime),$$ is a $C^1$ diffeomorphism. Define $$V:=\jmath^{-1}(V^\prime)\subseteq U\quad \textrm{and}\quad W:=F(V^\prime),$$ and notice $V$ and $W$ are open sets. Also, using the injectivity of $\jmath$: $$\jmath(p)\in V^\prime\Rightarrow p=\jmath^{-1}(\jmath(p))\in \jmath^{-1}(V^\prime)=V,$$ whereas: $$f(p)=F(\jmath(p))\in F(V^\prime)=W.$$ Notice: $$\jmath(V)\subset V^\prime\quad \textrm{and}\quad f(V)=f(\jmath^{-1}(V^\prime))\subset F(V^\prime)=W.$$ Take $g:=(F|_{V^\prime})^{-1}:W\longrightarrow \jmath(V)$ (which is a $C^1$-diffeomorphism). Finally, given $(x_1, \ldots, x_n)\in V$: $$(F|_{V^\prime})\circ \jmath(x_1, \ldots, x_n)=(F|_{V^\prime})(x_1, \ldots, x_n, 0, \ldots, 0)=f(x_1, \ldots, x_n).$$ Therefore, $$\jmath(x_1, \ldots, x_n)=(F|_{V^\prime})^{-1}\circ f(x_1, \ldots, x_n)=g\circ f(x_1, \ldots, x_n),\ \forall (x_1, \ldots, x_n)\in V.$$