  Consider a dynamic programming scheme for a decision problem in which all
subproblems involved are also decision problems. An implementation of such a
scheme is {\em positive-instance driven} (PID), if it generates positive
subproblem instances, but not negative ones, building each on smaller positive
instances.
  We take the dynamic programming scheme due to Bouchitt\'{e} and Todinca for
treewidth computation, which is based on minimal separators and potential
maximal cliques, and design a variant (for the decision version of the problem)
with a natural PID implementation. The resulting algorithm performs extremely
well: it solves a number of standard benchmark instances for which the optimal
solutions have not previously been known. Incorporating a new heuristic
algorithm for detecting safe separators, it also solves all of the 100 public
instances posed by the exact treewidth track in PACE 2017, a competition on
algorithm implementation.
  We describe the algorithm, prove its correctness, and give a running time
bound in terms of the number of positive subproblem instances. We perform an
experimental analysis which supports the practical importance of such a bound.
