[guided]The forward direction — "lattice $\Rightarrow$ discrete" — follows from the simple observation that $\mathbb{Z}^m$ is discrete in $\mathbb{R}^m$, combined with the fact that $\mathbb{R}$-linear isomorphisms preserve discreteness.
**Extending the given vectors to a basis.** Start with $x_1, \ldots, x_m \in \mathbb{R}^n$ linearly independent over $\mathbb{R}$. By a standard exchange-lemma argument, we can extend this list to an $\mathbb{R}$-basis $x_1, \ldots, x_n$ of $\mathbb{R}^n$ (if $m = n$ no extension is needed; otherwise pick any vector not in the span of $x_1, \ldots, x_m$, adjoin, and repeat).
**Defining the change-of-coordinates map.** Let
\begin{align*}
g : \mathbb{R}^n &\to \mathbb{R}^n
\end{align*}
be the unique $\mathbb{R}$-linear map with $g(x_i) = e_i$ for $i = 1, \ldots, n$. Since $g$ sends a basis to a basis, it is invertible, so $g \in \mathrm{GL}_n(\mathbb{R})$. Any element of $\mathrm{GL}_n(\mathbb{R})$ is a homeomorphism of $\mathbb{R}^n$: the linear map $g$ is automatically continuous (linear maps on finite-dimensional spaces are continuous), and its inverse $g^{-1}$ is also a linear map in $\mathrm{GL}_n(\mathbb{R})$, hence continuous. Continuous bijection with continuous inverse = homeomorphism.
**Image of $\Lambda$ under $g$.** Applying $g$ to the generators:
\begin{align*}
g(\Lambda) = \mathbb{Z} g(x_1) + \cdots + \mathbb{Z} g(x_m) = \mathbb{Z}e_1 + \cdots + \mathbb{Z}e_m.
\end{align*}
This is the set of vectors $(v_1, \ldots, v_n)$ with $v_1, \ldots, v_m \in \mathbb{Z}$ and $v_{m+1} = \cdots = v_n = 0$. Write this set as $\mathbb{Z}^m \times \{0\}^{n-m} \subseteq \mathbb{R}^n$.
**$\mathbb{Z}^m \times \{0\}^{n-m}$ is discrete in $\mathbb{R}^n$.** Recall that a subset $S \subseteq \mathbb{R}^n$ is **discrete** if every point $v \in S$ has a neighbourhood intersecting $S$ only in $\{v\}$. Take $\varepsilon = 1/2$. For any $v \in \mathbb{Z}^m \times \{0\}^{n-m}$, consider $B(v, \varepsilon)$. If $w \in (\mathbb{Z}^m \times \{0\}^{n-m}) \cap B(v, \varepsilon)$ and $w \neq v$, then $w - v$ is a non-zero vector in $\mathbb{Z}^m \times \{0\}^{n-m}$. Hence at least one coordinate $i \in \{1, \ldots, m\}$ has $(w - v)_i \in \mathbb{Z} \setminus \{0\}$, so $|(w - v)_i| \geq 1$, and therefore
\begin{align*}
|w - v| \geq |(w - v)_i| \geq 1 > 1/2 = \varepsilon,
\end{align*}
contradicting $w \in B(v, \varepsilon)$. Hence $B(v, 1/2) \cap g(\Lambda) = \{v\}$.
**Transporting discreteness back.** Homeomorphisms preserve the property "discrete". Explicitly, $\Lambda = g^{-1}(g(\Lambda))$, and for any $v \in \Lambda$, $g(v)$ has a ball $B(g(v), 1/2) \cap g(\Lambda) = \{g(v)\}$. The preimage $g^{-1}(B(g(v), 1/2))$ is an open set containing $v$ (since $g^{-1}$ is continuous), and $g^{-1}(B(g(v), 1/2)) \cap \Lambda = g^{-1}(B(g(v), 1/2) \cap g(\Lambda)) = g^{-1}(\{g(v)\}) = \{v\}$.
Thus every $v \in \Lambda$ has an open neighbourhood meeting $\Lambda$ only at $v$, so $\Lambda$ is discrete.[/guided]