Probabilistic Programming: A True Verification Challenge
- 785 Downloads
Probabilistic programs  are sequential programs, written in languages like C, Java, Scala, or ML, with two added constructs: (1) the ability to draw values at random from probability distributions, and (2) the ability to condition values of variables in a program through observations. For a comprehensive treatment, see . They have a wide range of applications. Probabilistic programming is at the heart of machine learning for describing distribution functions; Bayesian inference is pivotal in their analysis. Probabilistic programs are central in security for describing cryptographic constructions (such as randomised encryption) and security experiments. In addition, probabilistic programs are an active research topic in quantitative information flow. Quantum programs are inherently probabilistic due to the random outcomes of quantum measurements. Finally, probabilistic programs can be used for approximate computing, e.g., by specifying reliability requirements for programs that allocate data in unreliable memory and use unreliable operations in hardware (so as to save energy dissipation) . Other applications include  scientific modeling, information retrieval, bio–informatics, epidemiology, vision, seismic analysis, semantic web, business intelligence, human cognition, and more. Microsoft has started an initiative to improve the usability of probabilistic programming which has resulted in languages such as R2  and Tabular  emerged.
KeywordsInvestigation Program Quantitative Information Flow Distribution Function Description Unreliable Operation Security Experiment
This work is funded by the EU FP7-projects SENSATION and MEALS, and the Excellence Initiative of the German federal and state government.
- 1.Carbin, M., Misailovic, S., Rinard, M.C.: Verifying quantitative reliability for programs that execute on unreliable hardware. In: Proceedings of OOPSLA, pp. 33–52. ACM Press (2013)Google Scholar
- 3.Goodman, N.D., Stuhlmüller, A.: The Design and Implementation of Probabilistic Programming Languages (electronic) (2014). http://dippl.org
- 4.Gordon, A.D.: An agenda for probabilistic programming: Usable, portable, and ubiquitous (2013)Google Scholar
- 5.Gordon, A.D., Graepel, T., Rolland, N., Russo, C.V., Borgström, J., Guiver, J.: Tabular: a schema-driven probabilistic programming language. In: Proceedings of POPL, pp. 321–334. ACM Press (2014)Google Scholar
- 6.Gordon, A.D., Henzinger, T.A., Nori, A.V., Rajamani, S K.: Probabilistic programming. In: Proceedings of FOSE, pp. 167–181. ACM Press (2014)Google Scholar
- 7.Gretz, F., Jansen, N., Kaminski, B.L., Katoen, J.-P., McIver, A., Olmedo, F.: Conditioning in probabilistic programming. In: Proceedings of MFPS, ENTCSGoogle Scholar
- 10.Jansen, N., Corzilius, F., Volk, M., Wimmer, R., Ábrahám, E., Katoen, J.-P., Becker, B.: Accelerating parametric probabilistic verification. In: Norman, G., Sanders, W. (eds.) QEST 2014. LNCS, vol. 8657, pp. 404–420. Springer, Heidelberg (2014) Google Scholar
- 13.Nori, A.V., Hur, C.-K., Rajamani, S.K., Samuel, S.: R2: An efficient MCMC sampler for probabilistic programs. In: Proceedings of AAAI, AAAI Press (2014)Google Scholar
- 14.Pathak, S., Ábrahám, E., Jansen, N., Tacchella, A., Katoen, J.-P.: A greedy approach for the efficient repair of stochastic models. In: Havelund, K., Holzmann, G., Joshi, R. (eds.) NFM 2015. LNCS, vol. 9058, pp. 295–309. Springer, Heidelberg (2015) Google Scholar