Abstract

Temporal logic is a formal system for specifying and reasoning about propositions qualified in terms of time. It offers a unified approach to program verification as it applies to both sequential and parallel programs and provides a uniform framework for describing a system at any level of abstraction. Thus, a number of automated systems have been proposed to exclusively reason about either Computation-Tree Logic (CTL) or Linear Temporal Logic (LTL) in the infinite-state setting. Unfortunately, these logics have significantly reduced expressiveness as they restrict the interplay between temporal operators and path quantifiers, thus disallowing the expression of many practical properties, for example, “along some future an event occurs infinitely often.” Contrarily, CTL * , a superset of both CTL and LTL, can facilitate the interplay between path-based and state-based reasoning. CTL * thus exclusively allows for the expressiveness of properties involving existential system stabilization and “possibility” properties. Until now, there have not existed automated systems that allow for the verification of such expressive CTL * properties over infinite-state systems. This article proposes a method capable of such a task, thus introducing the first known fully automated tool for symbolically proving CTL * properties of (infinite-state) integer programs. The method uses an internal encoding that admits reasoning about the subtle interplay between the nesting of temporal operators and path quantifiers that occurs within CTL * proofs. A program transformation is first employed that trades nondeterminism in the transition relation for nondeterminism explicit in variables predicting future outcomes when necessary. We then synthesize and quantify preconditions over the transformed program that represent program states that satisfy a CTL * formula. This article demonstrates the viability of our approach in practice, thus leading to a new class of fully-automated tools capable of proving crucial properties that no tool could previously prove. Additionally, we consider the linear-past extension to CTL * for infinite-state systems in which the past is linear and each moment in time has a unique past. We discuss the practice of this extension and how it is further supported through the use of history variables. We have implemented our approach and report our benchmarks carried out on case studies ranging from smaller programs to demonstrate the expressiveness of CTL * specifications, to larger code bases drawn from device drivers and various industrial examples.

Highlights

  • The linear-time logic Linear Temporal Logic (LTL) is a fragment of Computation-Tree Logic (CTL)∗ that only allows formulae of the form Aψ, where A is the only occurrence of a path quantifier within ψ

  • Approximation In Alg. 2, we present a syntactic conversion from pure linear-time formulae in CTL∗, that is LTL, to a corresponding over-approximation in approximated universal CTL formula (ACTL)

  • We show by induction on the number of path quantifiers in a computation tree logic (CTL∗)lp formula θ that the set of states computed as satisfying θ returned from ProveCTL∗lp is sound

Read more

Summary

Context and Motivation

In [Pnueli 1977], Amir Pnueli introduced the idea of utilizing temporal logic as a unifying approach to program analysis for both sequential and parallel programs. Proof systems for the verification of temporal logic, first introduced by [Emerson and Halpern 1986; Lamport 1980], have been well-studied It is well-known that CTL∗ model checking for infinite-state systems generalizes termination and co-termination and is undecidable. Finding a way that allows us to symbolically move between representations of sets of states for branching-time, and sets of paths for linear-time in a way that is conducive to automatic analysis has been an outstanding problem in automatic program verification This restriction on the interplay between linear-time and branching-time operators causes various crucial properties to be inexpressible. Our strategy allows us to symbolically move between representations of sets of states and sets of paths, leading to the first known fully-automatic method capable of proving CTL∗ properties of infinitestate programs

Expressiveness of Temporal Logics and Their Applications to Programs
Approach and Contribution
Limitations
Defining Programs and Transition Systems
Utilizing Strongly Connected Subgraphs
Overview
Example
Determinization
Approximation
Interaction of Histories and Prophecies
CASE STUDY AND EVALUATION
Benchmarks
RELATED WORK
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call