Software model-checking as cyclic-proof search

@article{Tsukada2021SoftwareMA,
  title={Software model-checking as cyclic-proof search},
  author={Takeshi Tsukada and Hiroshi Unno},
  journal={Proceedings of the ACM on Programming Languages},
  year={2021},
  volume={6},
  pages={1 - 29}
}
This paper shows that a variety of software model-checking algorithms can be seen as proof-search strategies for a non-standard proof system, known as a cyclic proof system. Our use of the cyclic proof system as a logical foundation of software model checking enables us to compare different algorithms, to reconstruct well-known algorithms from a few simple principles, and to obtain soundness proofs of algorithms for free. Among others, we show the significance of a heuristics based on a notionโ€ฆย 

Figures and Tables from this paper

CycleQ: an efficient basis for cyclic equational reasoning

By restricting the form of the traces, it is shown that global correctness in the system can be verified incrementally, taking advantage of the well-known size-change principle, which leads to an efficient implementation of proof search.

References

SHOWING 1-10 OF 70 REFERENCES

Automatic Abstraction in SMT-Based Unbounded Software Model Checking

This paper presents a combination of automatic abstraction with the under-approximation-driven framework, and explores two iterative approaches for obtaining and refining abstractions --- proof based and counterexample based --- and shows how they can be combined into a unified algorithm.

SAT-Based Model Checking without Unrolling

Experimental studies show that induction is a powerful tool for generalizing the unreachability of given error states: it can refine away many states at once, and it is effective at focusing the proof search on aspects of the transition system relevant to the property.

Failure of cut-elimination in cyclic proofs of separation logic

The role of the cut rule is studied by showing that the cut-elimination property fails in cyclic proof systems for separation logic, and suggesting that theCut rule is important for a practical application of cyclic proofs to separation logic.

Automatically Verifying Temporal Properties of Pointer Programs with Cyclic Proof

This article presents a proof system tailored to proving CTL properties of nondeterministic pointer programs, and adapts this system to handle fair execution conditions, yielding an automated tool that is capable of automatically discovering proofs of (fair) temporal properties of pointer programs.

Satisfiability Modulo Recursive Programs

The system, Leon, verified detailed correctness properties for functional data structure implementations, as well as syntax tree manipulations, and was found to be fast for both finding counterexamples and finding correctness proofs, and to scale to larger programs than alternative techniques.

Configurable Software Verification: Concretizing the Convergence of Model Checking and Program Analysis

An algorithm and tool are designed and built that can be configured to perform not only a purely tree-based or a purely lattice-based analysis, but offers many intermediate settings that have not been evaluated before.

Symbolic Model Checking without BDDs

This paper shows how boolean decision procedures, like Stalmarck's Method or the Davis & Putnam Procedure, can replace BDDs, and introduces a bounded model checking procedure for LTL which reduces model checking to propositional satisfiability.

SMT-based model checking for recursive programs

An SMT-based symbolic model checking algorithm for safety verification of recursive programs and shows that for programs and properties over a decidable theory, the algorithm is guaranteed to find a counterexample, if one exists.

Generalized Property Directed Reachability

This work provides a specification of the IC3 algorithm using an abstract transition system and highlights its dual operation: model search and conflict resolution, and generalizes the method to Boolean constraints involving theories.

Cyclic proofs of program termination in separation logic

A novel approach to proving the termination of heap-manipulating programs, which combines separation logic with cyclic proof within a Hoare-style proof system and gives a completeness result, which is relative in that it relies upon completeness of a proof system for logical implications in separation logic.
...