  We provide a detailed development of a function valued inner product known as
the bracket product and used effectively by de Boor,
  Devore, Ron and Shen to study translation invariant systems. We develop a
version of the bracket product specifically geared to
  Weyl-Heisenberg frames. This bracket product has all the properties of a
standard inner product including Bessel's inequality, a Riesz Representation
Theorem, and a Gram-Schmidt process which turns a sequence of functions
$(g_{n})$ into a sequence $(e_{n})$ with the property that
$(E_{mb}e_{n})_{m,n\in \Bbb Z}$ is orthonormal in $L^{2}(\Bbb R)$. Armed with
this inner product, we obtain several results concerning Weyl-Heisenberg
frames. First we see that fiberization in this setting takes on a particularly
simple form and we use it to obtain a compressed representation of the frame
operator. Next, we write down explicitly all those functions $g\in
  L^{2}(\Bbb R)$ and $ab=1$ so that the family $(E_{mb}T_{na}g)$ is complete in
$L^{2}(\Bbb R)$. One consequence of this is that for functions $g$ supported on
a half-line $[{\alpha},\infty)$ (in particular, for compactly supported $g$),
$(g,1,1)$ is complete if and only if $\text{sup}_{0\le t< a}|g(t-n)|\not= 0$
a.e. Finally, we give a direct proof of a result hidden in the literature by
proving: For any $g\in L^{2}(\Bbb R)$, $A\le \sum_{n}
  |g(t-na)|^{2}\le B$ is equivalent to $(E_{m/a}g)$ being a Riesz basic
sequence.
