SMS dit: Commutative semantics for probabilistic programming