It should be pretty simple, just chase the types.
You need the FwdRewrite mnf with a custom m value, so you can pass it to the following function:
analyzeAndRewriteFwd :: forall mnfex entries. (CheckpointMonad m, NonLocal n, LabelsPtr entries) => FwdPass mnf -> MaybeC e entries -> Graph nex -> Fact ef -> m (Graph nex, FactBase f, MaybeO xf)
So the only restriction on m you have is that it is CheckpointMonad ; then when you start the passage, you will get the final monadic value, which you can run yourself.
In fact, GHC Hoopl conveys the use of m as SimplUniqMonad , so we can get fresh labels while we work on the chart.
{-
source share