Open ideas for GBNP, collected from the authors' notes. "PTS" refers to
the prefix (module) variants of functions.

Interface
---------
- Allow stopping a Gröbner basis computation after a time limit
  (stopping after a number of iterations is possible, see SGrobner).
- Clarify the difference between IsGrobnerPair and IsGrobnerBasis;
  possibly combine them.
- CheckHomogeneousNPs should return fail instead of false.
- Keep options in a record per computation, initialized with defaults.
- Gröbner basis records or objects, holding e.g. the occurrence trees;
  this would make GBNP.StrongNormalForm2 superfluous.
- DimQA that counts the standard monomials (depth first) instead of
  computing them.
- Document GraphOfNormalWords, GraphOfChains, HilbertSeriesG and
  DetermineGrowthObs, with examples; their manual entries are commented
  out in gbnp_doc.xml.
- Index entries other than function names in the manual.

Algorithms and speed
--------------------
- Cancellation everywhere; currently prefix generators cannot be
  cancelled (see "XXX prefix not cancelled" in grobnerloops.gi).
- Speed up GBNP.ReducePol2: remove the double loop and the Occur call
  (see "XXX can this occur be removed" in grobner.gi).
- GBNP.SGrobnerLoop: GBNP.ObsTall sorts todo; move this to the end of
  the loop, combined with a phase that reduces todo without removing and
  inserting, using a new StrongNormalForm variant.
- GBNP.ObsTrunc could get obstructions from the normal list function.
- Check input with more than one polynomial with the same leading term.
- Shorten traces.
- Put the prefix generators at the end of the list for trees (saves
  space).
- Make test cases for performance testing.

Traces
------
- Add the original relations to the Gröbner basis trace record.
- Compute StrongNormalFormTraceDiff with respect to the Gröbner basis
  instead of the original relations.
- Count monomials in the trace in example 24.

Code structure
--------------
- Merge the SGrobner variants, the ReducePol variants,
  GBNP.ReducePolTails and GBNP.ReducePolTailsPTS; reduce the number of
  PTS functions by using the two-sided ones.
- GBNP.ReducePolTailsPTS does not reduce but clean; rename it.
- Merge the trees; include traces in the "all" variants.
- Rewrite code using tree.gi to use occurtree.gi.
- Make the k-ary heap (kary-heap.gi) optional or remove it.
- Check whether all functions use funcs.strong.
