runMkPNMonad0 :: Monad m => MkPNMonad m value a -> (a, PN m value)
    runMkPNMonad0 m = (ret, PN places trans marking)
        where
            trans = mkpnTrans pn'
            places = mkpnPlaces pn'
            marking = mkpnMarking pn'
            pn0 = MkPN [] 0 0 DM.empty DM.empty DM.empty
            (ret, pn') = runState m pn0
runMkPNMonad0 :: Monad m => MkPNMonad m value a -> (a, PN m value)
runMkPNMonad0 m = (ret, PN places trans marking)
        where
            trans = mkpnTrans pn'
            places = mkpnPlaces pn'
            marking = mkpnMarking pn'
            pn0 = MkPN [] 0 0 DM.empty DM.empty DM.empty
            (ret, pn') = runState m pn0
runMkPNMonad0 m = (ret, PN places trans marking)
        where
            trans = mkpnTrans pn'
            places = mkpnPlaces pn'
            marking = mkpnMarking pn'
            pn0 = MkPN [] 0 0 DM.empty DM.empty DM.empty
            (ret, pn') = runState m pn0