Test the generic abstract interpreter by using a simple path counting domain. Path counting is actually a decent stress test--if you join too much/too little, you'll over/under-count, and you'll diverge at loops if you don't widen
module PathCountDomain : sig ... end
module PathCountTransferFunctions : functor (CFG : InferModules.ProcCfg.S) -> sig ... end
module NormalTestInterpreter : sig ... end
module ExceptionalTestInterpreter : sig ... end