of minimum vectors (say, $L$) we can, by similar arguments, achieve density $L(1-\varepsilon)/2^{m}$.

A $k$-dimensional vector subspace $\mathcal{C} \subset \mathbb{F}_p^n$ is called a (linear) *code* with parameters $(n,k,p)$ (or simply an $(n,k,p)$-code).

Throughout the paper we use the standard “big-O”, “big-omega” and “little-omega” notations, e.g. $f(x) = \Omega(g(x))$ if $\lim \sup_{x\to \infty} |g(x)/f(x)| < +\infty$, and $f(x) = \omega(g(x))$ if $\lim_{x \to \infty} g(x)/f(x) = 0$.

Generalized Reductions {#sec:genRed}
======================

From now on, let $\Lambda$ be a rank $m$ lattice and let $n \leq m$ be an integer.

Let $\phi_p:\Lambda\to \mathbb{F}_p^n$ be a surjective homomorphism. Given a linear code $C$, its associated lattice via $\phi_p$ is defined as $\Lambda_p(C) \triangleq \phi_p^{-1}(C)$. \[def:ConsGen\]

A surjective homomorphism as in the above definition will, from now on, be called a *reduction*. We shall see that $\Lambda_p(C)$ is indeed a lattice of rank $m$. First observe that $\Lambda_p(C)$ is a subgroup of $\Lambda_p(\mathbb{F}_p^n)=\Lambda$. Since the quotient $\Lambda/\text{ker}(\phi_p) \simeq \mathbb{F}_p^n$ is finite, $\text{ker}(\phi_p)=\Lambda_p(\left\{\mathbf{0}\right\})\triangleq\Lambda_p$ is a sub-lattice of $\Lambda$, of rank $m$. From the inclusion $\Lambda_p \subset \Lambda_p(C) \subset \Lambda$, we conclude that the three lattices have the same rank. Moreover, $\Lambda_p(C)/\Lambda_p \simeq C$, and therefore $V( \Lambda_p(C)) = \left|C\right|^{-1} p^{n} V( \Lambda)$.

There is an 