Suppose that $A$ and $B$ are finite dimensional vector spaces. Let $U \subseteq A$ be open and $f:U \to B$ be $C^{\infty}$. Show that $\{a \in U : (Df)_a \text{ is injective}\}$ is open.
I tried showing that the rank of the $(Df)_x$ is constant for x in a neighborhood of $a$ but I don't think I have enough tools for that. I suppose this somehow follows from the inverse function theorem but I just don't see it. My guess is that it being injective implies that it is nonzero, and so it must be nonzero on a neighborhood, but I don't know if that's correct.
Let $M(n,m)$ be the space of matrices of size $n\times m$. The set $U$ of matrices with maximal rank is clearly open, since its complement is the zero-locus of all the maximal minors (in particular, closed).
Now if you pick a basis for $A$ and $B$, the map $Df$ can be considered as $Df:A\to M(\dim B,\dim A)$ and the points where $Df$ is injective is exactly $Df^{-1}(U)$, which is open.
As stated, you should consider the cases where $\dim A> \dim B$ and $\dim B<\dim A$ separately, but I am sure you can work that out.