Describir: Commutative semantics for probabilistic programming