Build and evaluate trees of predicates. For example, you might build a
predicate of the type Int -> Bool. You do this by assembling several predicates
into a tree. You can then verbosely evaluate this tree, showing why a
particular result is reached.
prednote also provides modules to test several subjects against a given
predicate, and to parse infix or RPN expressions into a tree of predicates.