ShortestVectors( G, m )
ShortestVectors( G, m, "positive" )
computes all vectors x with x G x^{tr} leq m,  where G is a matrix
of a symmetric bilinear  form, and m  is a nonnegative integer.  If the
optional argument "positive" is entered, only  those vectors x with
nonnegative entries are computed.
ShortestVectors returns a record with components
vectors:
norms:
    gap> g:= [ [ 2, 1, 1 ], [ 1, 2, 1 ], [ 1, 1, 2 ] ];;
    gap> ShortestVectors(g,4);
    rec(
      vectors := [ [ -1, 1, 1 ], [ 0, 0, 1 ], [ -1, 0, 1 ], [ 1, -1, 1 ],
          [ 0, -1, 1 ], [ -1, -1, 1 ], [ 0, 1, 0 ], [ -1, 1, 0 ],
          [ 1, 0, 0 ] ],
      norms := [ 4, 2, 2, 4, 2, 4, 2, 2, 2 ] )
This algorithm is used in OrthogonalEmbeddings OrthogonalEmbeddings.
GAP 3.4.4