Probabilistic Horn Clause Verification

Constrained Horn clauses have proven to be a natural intermediate language for logically characterizing program semantics and reasoning about program behavior. In this paper, we present probabilistically constrained Horn clauses (pchc), which incorporate probabilistic variables inside otherwise traditional constrained Horn clauses. pchc enable reasoning about probabilistic programs by encoding them as Horn clauses. Encoding probabilistic program semantics as pchc allows us to seamlessly handle procedure calls and recursion, as well as angelic and demonic forms of nondeterminism. We formalize pchc semantics and present a verification algorithm that can prove probabilistic safety properties of programs. We present an implementation and evaluation of our approach on a number of probabilistic programs and properties.

[1]  Patrick Cousot,et al.  Probabilistic Abstract Interpretation , 2012, ESOP.

[2]  Guy Van den Broeck,et al.  Probabilistic Inference in Hybrid Domains by Weighted Model Integration , 2015, IJCAI.

[3]  David Monniaux,et al.  Abstract Interpretation of Probabilistic Semantics , 2000, SAS.

[4]  Noah D. Goodman The principles and practice of probabilistic programming , 2013, POPL.

[5]  Kousha Etessami,et al.  PReMo : An Analyzer for P robabilistic Re cursive Mo dels , 2007, TACAS.

[6]  Krishnendu Chatterjee,et al.  Algorithmic Analysis of Qualitative and Quantitative Termination Problems for Affine Probabilistic Programs , 2018, ACM Trans. Program. Lang. Syst..

[7]  Dan Grossman,et al.  Expressing and verifying probabilistic assertions , 2014, PLDI.

[8]  Luc De Raedt,et al.  Probabilistic inductive logic programming , 2004 .

[9]  Annabelle McIver,et al.  Linear-Invariant Generation for Probabilistic Programs: - Automated Support for Proof-Based Methods , 2010, SAS.

[10]  Akash Lal,et al.  DAG inlining: a decision procedure for reachability-modulo-theories in hierarchical programs , 2015, PLDI.

[11]  K. McMillan,et al.  Solving Constrained Horn Clauses using Interpolation , 2013 .

[12]  Sumit Gulwani,et al.  Lifting abstract interpreters to quantified logical domains , 2008, POPL '08.

[13]  Annabelle McIver,et al.  Abstraction, Refinement and Proof for Probabilistic Systems , 2004, Monographs in Computer Science.

[14]  Marta Z. Kwiatkowska,et al.  Probabilistic model checking of complex biological pathways , 2008, Theor. Comput. Sci..

[15]  Norbert Fuhr,et al.  Probabilistic Datalog—a logic for powerful retrieval methods , 1995, SIGIR '95.

[16]  Sanjit A. Seshia,et al.  Distribution-Aware Sampling and Weighted Model Counting for SAT , 2014, AAAI.

[17]  Cynthia Dwork,et al.  Differential Privacy , 2006, ICALP.

[18]  Andrey Rybalchenko,et al.  Synthesizing software verifiers from proof rules , 2012, PLDI.

[19]  Jesús A. De Loera,et al.  Software for exact integration of polynomials over polyhedra , 2012, ACCA.

[20]  Axel Legay,et al.  Statistical Model Checking: An Overview , 2010, RV.

[21]  J. Esparza,et al.  Model checking probabilistic pushdown automata , 2004, LICS 2004.

[22]  Martin C. Rinard,et al.  Verified integrity properties for safe approximate program transformations , 2013, PEPM '13.

[23]  Nikolaj Bjørner,et al.  Horn Clause Solvers for Program Verification , 2015, Fields of Logic and Computation II.

[24]  Larry J. Stockmeyer,et al.  On Approximation Algorithms for #P , 1985, SIAM J. Comput..

[25]  Sumit Gulwani,et al.  Static analysis for probabilistic programs: inferring whole program properties from finitely many paths , 2013, PLDI.

[26]  Corina S. Pasareanu,et al.  Reliability analysis in Symbolic PathFinder , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[27]  Jorge A. Navas,et al.  The SeaHorn Verification Framework , 2015, CAV.

[28]  Rupak Majumdar,et al.  Approximate counting in SMT and value estimation for probabilistic programs , 2014, Acta Informatica.

[29]  Timon Gehr,et al.  PSI: Exact Symbolic Inference for Probabilistic Programs , 2016, CAV.

[30]  Axel Legay,et al.  A Bayesian Approach to Model Checking Biological Systems , 2009, CMSB.

[31]  Andrey Rybalchenko,et al.  Solving Existentially Quantified Horn Clauses , 2013, CAV.

[32]  Matthew B. Dwyer,et al.  Exact and approximate probabilistic symbolic execution for nondeterministic programs , 2014, ASE.

[33]  Sriram Sankaranarayanan,et al.  Probabilistic Program Analysis with Martingales , 2013, CAV.

[34]  Marta Z. Kwiatkowska,et al.  PRISM 4.0: Verification of Probabilistic Real-Time Systems , 2011, CAV.

[35]  Guy Van den Broeck,et al.  Hashing-Based Approximate Probabilistic Inference in Hybrid Domains , 2015, UAI.

[36]  Nikolaj Bjørner,et al.  On Solving Universally Quantified Horn Clauses , 2013, SAS.

[37]  Dexter Kozen,et al.  Semantics of probabilistic programs , 1979, 20th Annual Symposium on Foundations of Computer Science (sfcs 1979).

[38]  Avi Pfeffer,et al.  Semantics and Inference for Recursive Probability Models , 2000, AAAI/IAAI.

[39]  Matthew B. Dwyer,et al.  Probabilistic symbolic execution , 2012, ISSTA 2012.

[40]  David Monniaux An abstract Monte-Carlo method for the analysis of probabilistic programs , 2001, POPL '01.

[41]  Adnan Darwiche,et al.  On probabilistic inference by weighted model counting , 2008, Artif. Intell..

[42]  Ashutosh Gupta,et al.  HSF(C): A Software Verifier Based on Horn Clauses - (Competition Contribution) , 2012, TACAS.

[43]  Kousha Etessami,et al.  Recursive Markov chains, stochastic grammars, and monotone systems of nonlinear equations , 2005, JACM.