Also sort out PDF and info generation.
Instead of (ALL-VALUES (AN-INTEGER-BETWEEN LOW HIGH)), use (INTEGERS-BETWEEN LOW HIGH) which builds the list using LOOP. 3 - 5 times as fast, not that this is a bottleneck.
I'm just reckless that way.
Also make it not signal an error if something is asserted about the variable when it has no upper bound. I strongly suspect the old implementation has other defects as well, eg. (let ((v (a-realv))) (second (best-value (let ((x (either 1 2 nil 0))) (when x (assert! (=v x v)))) v))) evaluating to 0, not 2... but I'm suffering a bout of uncertainty and feel relucant to change it before 3.21 is out.