Added rewrite code to replace an expression with a literal if the type
system tells us what the value must be. Most useful for
IF-predicates, as replacing <pred> by, e.g., (BEGIN <pred> '#T) allows
the dead code to be removed.
Added predicate code to yield a #T or #F value. Previously the
predicate information was being used only in the branches of an if.
Obviously, it is nice to know when the predicate is always true or
false.
Tweaked with inference rules for EQ?/EQV?/EQUAL?. This could be
better, for example, if (eq? x y) then we know the types must be in
the intersection. This would require work in TYPEREW/PRED.