[Aborted attempt to write up a verification of the following ... it’s too hard to produce formatted reports in Mathematica, at least knowing what I know about it.]

Ashcroft and Mermin suggests “It is important to convince oneself both geometrically and analytically that these sets do indeed generate the bcc Bravais lattice.”

The two sets are:

({{(RowDefault[(Subscript[(OverVector[b]), 1]),  = , (1/2) a (({{2}, {0}, {0}}))])}, {(RowDefault[(Subscript[(OverVector[b]), 2]),  = , (1/2) a (({{0}, {2}, {0}}))])}, {(RowDefault[(Subscript[(OverVector[b]), 3]),  = , (1/2) a (({{1}, {1}, {1}}))])}})

and

({{(RowDefault[(Subscript[(OverVector[a]), 1]),  = , (a/2), (({{-1}, {1}, {1}}))])}, {(RowDefault[(Subscript[(OverVector[a]), 2]),  = , (a/2), (({{1}, {-1}, {1}}))])}, {(RowDefault[(Subscript[(OverVector[a]), 3]),  = , (a/2), (({{1}, {1}, {-1}}))])}})

We can verify the desired result by forming

(({{(Subscript[(OverVector[a]), 1]), (Subscript[(OverVector[a]), 2]), (Subscript[(OverVector[a]), 3])}})) (({{l}, {m}, {n}})) = (OverVector[c]),

where (OverVector[c]) is an arbitrary lattice position, and l, m, n are integers.  We basically just have to invert the matrix.  If integer l, m, n can be found by this inversion we are done.

Clear[ a, a1, a2, a3, am, ai ]
a1 = (a/2){ -1, 1, 1 } ;
a2 = (a/2){ 1, -1, 1 } ;
a3 = (a/2){ 1, 1, -1 } ;
am = Transpose[ { a1, a2, a3 } ] ;
ai = Inverse[ am ] ;

Clear[ ar, br, b ]
ar = OverVector[ a ] ;
br = OverVector[ b ] ;

Clear[ ra ]
ra = Column[Table[
Row[{(Subscript[ar, i])," = ", a/2,MatrixForm[2 am[[All,i]]]/.a -> 1}], {i, 3}] // Flatten]

Clear[ b1, b2, b3, bm, bi ]
b1 = a{ 1, 0, 0 } ;
b2 = a{ 0,1, 0 } ;
b3 = (a/2){ 1, 1, 1 } ;
bm = Transpose[ { b1, b2, b3 } ] ;
(*bm // MatrixForm*)
bi = Inverse[ bm ] ;

Clear[ rb ]
rb = Column[Table[
Row[{
(Subscript[br, i])," = ",
a/2MatrixForm[2bm[[All,i]]/a]}], {i, 3}] // Flatten]