Rethinking Static Analysis by Combining Discrete and Continuous Reasoning

Static analyses predominantly use discrete modes of logical reasoning to derive facts about programs. Despite significant strides, this form of reasoning faces new challenges in modern software applications and practices. These challenges concern not only traditional analysis objectives such as scalability, accuracy, and soundness, but also emerging ones such as tailoring analysis conclusions based on relevance or severity of particular code changes, and needs of individual programmers.

[1]  Dawson R. Engler,et al.  A few billion lines of code later , 2010, Commun. ACM.

[2]  Judea Pearl,et al.  Probabilistic reasoning in intelligent systems - networks of plausible inference , 1991, Morgan Kaufmann series in representation and reasoning.

[3]  Yannis Smaragdakis,et al.  Strictly declarative specification of sophisticated points-to analyses , 2009, OOPSLA.

[4]  Thomas W. Reps,et al.  Demand Interprocedural Program Analysis Using Logic Databases , 1993, Workshop on Programming with Logic Databases , ILPS.

[5]  Xin Zhang,et al.  Effective interactive resolution of static analysis alarms , 2017, Proc. ACM Program. Lang..

[6]  Abdussalam Alawini,et al.  Provenance Analysis for Missing Answers and Integrity Repairs , 2018, IEEE Data Eng. Bull..

[7]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[8]  Katsumi Inoue,et al.  ILP turns 20 - Biography and future challenges , 2012, Mach. Learn..

[9]  Bernhard Scholz,et al.  Provenance for Large-scale Datalog , 2019, ArXiv.

[10]  Mukund Raghothaman,et al.  Synthesizing Datalog Programs Using Numerical Relaxation , 2019, IJCAI.

[11]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[12]  Emir Pasalic,et al.  Design and Implementation of the LogicBlox System , 2015, SIGMOD Conference.

[13]  Matthew Richardson,et al.  Markov logic networks , 2006, Machine Learning.

[14]  Luc De Raedt,et al.  DeepProbLog: Neural Probabilistic Logic Programming , 2018, BNAIC/BENELEARN.

[15]  Peter W. O'Hearn,et al.  Continuous Reasoning: Scaling the impact of formal methods , 2018, LICS.

[16]  Peter W. O'Hearn,et al.  Moving Fast with Software Verification , 2015, NFM.

[17]  Hakjoo Oh,et al.  Sound Non-Statistical Clustering of Static Analysis Alarms , 2017, ACM Trans. Program. Lang. Syst..

[18]  Luc De Raedt,et al.  An Algebraic Prolog for Reasoning about Possible Worlds , 2011, AAAI.

[19]  Mukund Raghothaman,et al.  Provenance-guided synthesis of Datalog programs , 2019, Proc. ACM Program. Lang..

[20]  Serge Abiteboul,et al.  Foundations of Databases , 1994 .

[21]  Michael Peyton Jones,et al.  QL: Object-oriented Queries on Relational Data , 2016, ECOOP.

[22]  Xin Zhang,et al.  A user-guided approach to program analysis , 2015, ESEC/SIGSOFT FSE.

[23]  Aws Albarghouthi,et al.  Constraint-Based Synthesis of Datalog Programs , 2017, CP.

[24]  Ondrej Lhoták,et al.  In defense of soundiness , 2015, Commun. ACM.

[25]  Patrick Cousot,et al.  The ASTREÉ Analyzer , 2005, ESOP.

[26]  Alexander Aiken,et al.  Effective static race detection for Java , 2006, PLDI '06.

[27]  Luc De Raedt,et al.  ProbLog: A Probabilistic Prolog and its Application in Link Discovery , 2007, IJCAI.

[28]  Stephen Muggleton,et al.  Inductive Logic Programming , 2011, Lecture Notes in Computer Science.

[29]  C. A. R. Hoare,et al.  Differential static analysis: opportunities, applications, and challenges , 2010, FoSER '10.

[30]  Stephen Muggleton,et al.  Scientific knowledge discovery using inductive logic programming , 1999, Commun. ACM.

[31]  Nikolaj Bjørner,et al.  μZ- An Efficient Engine for Fixed Points with Constraints , 2011, CAV.

[32]  Luc De Raedt,et al.  ILP turns 20 , 2011, Machine Learning.

[33]  Ondrej Lhoták,et al.  From Datalog to flix: a declarative language for fixed points on lattices , 2016, PLDI.

[34]  Radu Grigore,et al.  Abstraction refinement guided by a learnt probabilistic model , 2015, POPL.

[35]  Xin Zhang,et al.  On abstraction refinement for program analyses in Datalog , 2014, PLDI 2014.

[36]  Mukund Raghothaman,et al.  Continuously reasoning about programs using differential Bayesian inference , 2019, PLDI.

[37]  Mukund Raghothaman,et al.  User-guided program reasoning using Bayesian inference , 2018, PLDI.

[38]  Michael Arntzenius,et al.  Datafun: a functional Datalog , 2016, ICFP.

[39]  Matei Zaharia,et al.  Provenance Analysis for Missing Answers and Integrity Repairs. , 2018 .

[40]  Val Tannen,et al.  Provenance semirings , 2007, PODS.

[41]  Val Tannen,et al.  Semiring Provenance for First-Order Model Checking , 2017, ArXiv.

[42]  Xin Zhang,et al.  Volt: A Lazy Grounding Framework for Solving Very Large MaxSAT Instances , 2015, SAT.