-- mhPriorrans :: MonadDist m => Weighted m Bool -> m Bool
-- mhPriorrans d = fmap (!! 1) $ mh 2 d (MHKernel $ const $ fmap (,1) sprinkler)

-- check_prior_trans = enumerate (fmap (!! 2) (mhPrior 2 sprinkler_posterior)) ~==
--                     enumerate sprinkler

-- pimhTrans :: MonadDist m => Weighted m Bool -> m Bool
-- pimhTrans d = fmap (!! 1) $ mh 2 d kernel where
--   kernel = MHKernel $ const $ fmap (,1) $ collapse $ smc 2 2 sprinkler

-- check_pimh_trans = enumerate (fmap (!! 2) (pimh 2 2 2 sprinkler_posterior)) ~==
--                    enumerate sprinkler

check_trace_mh m m' = enumerate (dropTrace (mhStep (mhStep m))) ~==
                      enumerate m'
check_trace_mh m m' = enumerate (dropTrace (mhStep (mhStep m))) ~==
                      enumerate m'
check_trace_mh m m' = enumerate (dropTrace (mhStep (mhStep m))) ~==
                      enumerate m'