Gen: a general-purpose probabilistic programming system with programmable inference | Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation