In this paper, Papadimitriou gives a proof of the fact that integer linear programming is in NP. There are some points that are obscure to me. Let me state the theorems involved:
Lemma 1: Let A be a nonsingular $m \times m$ integer matrix. Then the components of the solution of $Ax = b$ are all rationals with numerator and denominator bounded by $(ma)^m$ where $a = \max\{|a_{ij}|, |b_j|\}$.
Lemma 2 includes the following:
Lemma 2: Let $v_1,\ldots,v_k$ be $k > 0$ vectors in $\{0,\pm 1,\ldots,\pm a\}^m$ and let $M = (ma)^{m+1}$. Then the following are equivalent:
a) There exists $k$ reals $\alpha_1,\ldots,\alpha_k \ge 0$ not all zero such that $\sum \alpha_j v_j = 0$.
b) There exist $k$ integers $\alpha_1, \ldots, \alpha_k$, $0 \le \alpha_j \le M$ for $j = 1,\ldots,k$, not all zero such that $\sum \alpha_j v_j = 0$.
If I assume that I get a square matrix somehow restricting to the independent vectors in the collection of $v$'s then I could at best hope that if the solutions are of the form $p_i/q_i$ then normalising I get $|q_1 \ldots q_k p| \le (ma)^{m(k+1)}$. What am I missing?
Edit
Further details are found in Papadimitriou and Steiglitz's "Combinatorial optimization: Algorithms and Complexity"
The above combined with Matousek and Gärtner "Understanding and Using Linear Programming" leads to a smooth proof.