Statically relating program properties for efficient verification (short WIP paper)

Efficient automatic verification of real world embedded software with numerous properties is a challenge. Existing techniques verify a sufficient subset of properties by identifying implication relations between their verification outcomes. We believe this is expensive and propose a novel complementary approach called grouping. Grouping does not consider the verification outcomes but uses data and control flow characteristics of the program to create disjoint groups of properties verifiable one group at a time.We present three grouping techniques, a framework, and experiments over open source and industrial applications to support our thesis. The experiments show a high gain in performance of a few state-of-the-art tools. This led to the integration of grouping into the verification process of an automotive software manufacturer.

[1]  Grigory Fedyukovich,et al.  FunFrog: Bounded Model Checking with Interpolation-Based Function Summarization , 2012, ATVA.

[2]  Kumar Madhukar,et al.  Efficient Elimination of False Positives Using Bounded Model Checking , 2013 .

[3]  Grigory Fedyukovich,et al.  Symbolic Detection of Assertion Dependencies for Bounded Model Checking , 2015, FASE.

[4]  Björn Lisper,et al.  Static Backward Program Slicing for Safety-Critical Systems , 2015, Ada-Europe.

[5]  Tukaram B. Muske,et al.  Review efforts reduction by partitioning of static analysis warnings , 2013, 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM).

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  Shrawan Kumar,et al.  VeriAbs: Verification by Abstraction (Competition Contribution) , 2017, TACAS.

[8]  Daniel Kroening,et al.  SATABS: SAT-Based Predicate Abstraction for ANSI-C , 2005, TACAS.

[9]  Daniel Kroening,et al.  A Tool for Checking ANSI-C Programs , 2004, TACAS.

[10]  Priyanka Darke,et al.  Efficient Safety Proofs for Industry-Scale Code Using Abstractions and Bounded Model Checking , 2017, 2017 IEEE International Conference on Software Testing, Verification and Validation (ICST).

[11]  Nikolai Kosmatov,et al.  Program slicing enhances a verification technique combining static and dynamic analysis , 2012, SAC '12.

[12]  Dirk Beyer,et al.  Interpolation for Value Analysis , 2015, Software Engineering & Management.

[13]  Keshav Pingali,et al.  A framework for generalized control dependence , 1996, PLDI '96.

[14]  Andreas Podelski,et al.  Ultimate Automizer with Two-track Proofs - (Competition Contribution) , 2016, TACAS.

[15]  Dirk Beyer,et al.  CPAchecker: A Tool for Configurable Software Verification , 2009, CAV.

[16]  Robert E. Tarjan,et al.  A fast algorithm for finding dominators in a flowgraph , 1979, TOPL.

[17]  Kenneth L. McMillan,et al.  Lazy Abstraction with Interpolants , 2006, CAV.

[18]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.