Check the basic block to be type correct and return the produced type stack.
A wrapper to route log messages to debug output also.
Apply the meet operator of the stack lattice on bl's predecessors.
A couple closure creators to reduce noise in the output: when multiple items are pushed or popped, this lets us print something short and sensible for those beyond the first.
The presence of emptyStack means that path has not yet been checked (and may not be empty).