Skip to main content

2004 | Buch

Verification, Model Checking, and Abstract Interpretation

5th International Conference, VMCAI 2004 Venice, Italy, January 11-13, 2004 Proceedings

herausgegeben von: Bernhard Steffen, Giorgio Levi

Verlag: Springer Berlin Heidelberg

Buchreihe : Lecture Notes in Computer Science

insite
SUCHEN

Inhaltsverzeichnis

Frontmatter

Tutorial

Security, Protocols, and Trust
Abstract
Information security has benefited from mathematically cogent modeling and analysis, which can assure the absence of specific kinds of attacks. Information security provides the right sorts of problems: Correctness conditions may be subtle, but they have definite mathematical content. Systems may be complex, but the essential reasons for failures are already present in simple components. Thus, rigorous methods lead to clear improvements.
Joshua D. Guttman

Security

Security Types Preserving Compilation
Abstract
Initiating from the seminal work of Volpano and Smith, there has been ample evidence that type systems may be used to enforce confidentiality of programs through non-interference. However, most type systems operate on high-level languages and calculi, and “low-level languages have not received much attention in studies of secure information flow” (Sabelfeld and Myers [16]). Further, security type systems for low-level languages should appropriately relate to their counterparts for high-level languages; however, we are not aware of any study of type-preserving compilers for type systems for information flow.
In answer to these questions, we introduce a security type system for a low-level language featuring jumps and calls, and show that the type system enforces termination-insensitive non-interference. Then, we introduce a compiler from a high-level imperative programming language to our low-level language, and show that the compiler preserves security types.
Gilles Barthe, Amitabh Basu, Tamara Rezk
History-Dependent Scheduling for Cryptographic Processes
Abstract
This paper presents history-dependent scheduling, a new technique for reducing the search space in the verification of cryptographic protocols. This technique allows the detection of some “non-minimal” interleavings during a depth-first search, and was implemented in TRUST, our cryptographic protocol verifier. We give some experimental results showing that our method can greatly increase the efficiency of the verification procedure.
Vincent Vanackère

Formal Methods I

Invited Talk

On the Expressive Power of Canonical Abstraction
Abstract
Abstraction and abstract interpretation are key tools for automatically verifying properties of systems. One of the major challenges in abstract interpretation is how to obtain abstractions that are precise enough to provide useful information. In this talk, I will survey a parametric abstract domain called canonical abstraction which was motivated by the shape analysis problem of determining “shape invariants” for programs that perform destructive updating on dynamically allocated storage. The shape analysis problem was originally defined by [1]. Canonical abstraction was originally defined in [2]. A system for abstract interpretation based on abstract interpretation was defined in [3,4].
I will discuss properties that have been verified using this abstraction. A couple of interesting properties of this abstract domain will be presented. Finally, I will also show some of the limitations of this domain.
Mooly Sagiv

Miscellaneous

Boolean Algebra of Shape Analysis Constraints
Abstract
The parametric shape analysis framework of Sagiv, Reps, and Wilhelm [45,46] uses three-valued structures as dataflow lattice elements to represent sets of states at different program points. The recent work of Yorsh, Reps, Sagiv, Wilhelm [48,50] introduces a family of formulas in (classical, two-valued) logic that are isomorphic to three-valued structures [46] and represent the same sets of concrete states.
In this paper we introduce a larger syntactic class of formulas that has the same expressive power as the formulas in [48]. The formulas in [48] can be viewed as a normal form of the formulas in our syntactic class; we give an algorithm for transforming our formulas to this normal form. Our formulas make it obvious that the constraints are closed under all boolean operations and therefore form a boolean algebra. Our algorithm also gives a reduction of the entailment and the equivalence problems for these constraints to the satisfiability problem.
Viktor Kuncak, Martin Rinard

Model Checking

Approximate Probabilistic Model Checking
Abstract
Symbolic model checking methods have been extended recently to the verification of probabilistic systems. However, the representation of the transition matrix may be expensive for very large systems and may induce a prohibitive cost for the model checking algorithm. In this paper, we propose an approximation method to verify quantitative properties on discrete Markov chains. We give a randomized algorithm to approximate the probability that a property expressed by some positive LTL formula is satisfied with high confidence by a probabilistic system. Our randomized algorithm requires only a succinct representation of the system and is based on an execution sampling method. We also present an implementation and a few classical examples to demonstrate the effectiveness of our approach.
Thomas Hérault, Richard Lassaigne, Frédéric Magniette, Sylvain Peyronnet
Completeness and Complexity of Bounded Model Checking
Abstract
For every finite model M and an LTL property ϕ, there exists a number \(\mathcal{CT}\) (the Completeness Threshold) such that if there is no counterexample to ϕ in M of length \(\mathcal{CT}\) or less, then Mϕ. Finding this number, if it is sufficiently small, offers a practical method for making Bounded Model Checking complete. We describe how to compute an over-approximation to \(\mathcal{CT}\) for a general LTL property using Büchi automata, following the Vardi-Wolper LTL model checking framework. Based on the value of \(\mathcal{CT}\), we prove that the complexity of standard SAT-based BMC is doubly exponential, and that consequently there is a complexity gap of an exponent between this procedure and standard LTL model checking. We discuss ways to bridge this gap.
The article mainly focuses on observations regarding bounded model checking rather than on a presentation of new techniques.
Edmund Clarke, Daniel Kroening, Joël Ouaknine, Ofer Strichman
Model Checking for Object Specifications in Hidden Algebra
Abstract
We use hidden algebra as a formal framework for object paradigm. We introduce a labeled transition system for each object specification model, and then define a suitable notion of bisimulation over these models. The labeled transition systems are used to define CTL models of object specifications. Given two hidden algebra models of an object specification, the bisimilar states satisfy the same set of CTL formulas. We build a canonical CTL model directly from the object specification. Using this CTL model, we can verify the temporal properties using a software tool allowing SMV model checking.
Dorel Lucanu, Gabriel Ciobanu
Construction of a Semantic Model for a Typed Assembly Language
Abstract
Typed Assembly Languages (TALs) can be used to validate the safety of assembly-language programs. However, typing rules are usually trusted as axioms. In this paper, we show how to build semantic models for typing judgments in TALs based on an induction technique, so that both the type-safety theorem and the typing rules can be proved as lemmas in a simple logic. We demonstrate this technique by giving a complete model to a sample TAL. This model allows a typing derivation to be interpreted as a machine-checkable safety proof at the machine level.
Gang Tan, Andrew W. Appel, Kedar N. Swadi, Dinghao Wu
Rule-Based Runtime Verification
Abstract
We present a rule-based framework for defining and implementing finite trace monitoring logics, including future and past time temporal logic, extended regular expressions, real-time logics, interval logics, forms of quantified temporal logics, and so on. Our logic, Eagle, is implemented as a Java library and involves novel techniques for rule definition, manipulation and execution. Monitoring is done on a state-by-state basis, without storing the execution trace.
Howard Barringer, Allen Goldberg, Klaus Havelund, Koushik Sen

Formal Methods II

Software Checking

Type Inference for Parameterized Race-Free Java
Abstract
We study the type system introduced by Boyapati and Rinard in their paper “A Parameterized Type System for Race-Free Java Programs” and try to infer the type annotations (“lock types”) needed by their type checker to show that a program is free of race conditions. Boyapati and Rinard automatically generate some of these annotations using default types and static inference of lock types for local variables, but in practice, the programmer still needs to annotate on the order of 1 in every 25 lines of code. We use run-time techniques, based on the lockset algorithm, in conjunction with some static analysis to automatically infer most or all of the annotations.
Rahul Agarwal, Scott D. Stoller
Certifying Temporal Properties for Compiled C Programs
Abstract
We investigate the certification of temporal properties of untrusted code. This kind of certification has many potential applications, including high confidence extension of operating system kernels. The size of a traditional, proof-based certificate tends to expand drastically because of the state explosion problem. Abstraction-carrying Code (ACC) obtains smaller certificates at the expense of an increased verification time. In addition, a single ACC certificate may be used to certify multiple properties. ACC uses an abstract interpretation of the mobile program as a certificate. A client receiving the code and the certificate will first validate the abstraction and then run a model checker to verify the temporal property.
We have developed ACCEPT/C, a certifier of reachability properties for an intermediate language program compiled from C source code, demonstrating the practicality of ACC. Novel aspects of our implementation include: 1) the use of a Boolean program as a certificate; 2) the preservation of Boolean program abstraction during compilation; 3) the encoding of the Boolean program as program assertions in the intermediate program; and 4) the semantics-based validation of the Boolean program via a verification condition generator (VCGen). Our experience of applying ACCEPT/C to real programs, including Linux and NT drivers, shows a significant reduction in certificate size compared to other techniques of similar expressive power; the time spent on model checking is reasonable.
Songtao Xia, James Hook
Verifying Atomicity Specifications for Concurrent Object-Oriented Software Using Model-Checking
Abstract
In recent work, Flanagan and Qadeer proposed atomicity declarations as a light-weight mechanism for specifying non-interference properties in concurrent programming languages such as Java, and they provided a type and effect system to verify atomicity properties. While verification of atomicity specifications via a static type system has several advantages (scalability, compositional checking), we show that verification via model-checking also has several advantages (fewer unchecked annotations, greater coverage of Java idioms, stronger verification). In particular, we show that by adapting the Bogor model-checker, we naturally address several properties that are difficult to check with a static type system.
John Hatcliff, Robby, Matthew B. Dwyer

Invited Talk

Static Analysis versus Software Model Checking for Bug Finding
Abstract
This paper describes experiences with software model checking after several years of using static analysis to find errors. We initially thought that the trade-off between the two was clear: static analysis was easy but would mainly find shallow bugs, while model checking would require more work but would be strictly better – it would find more errors, the errors would be deeper, and the approach would be more powerful. These expectations were often wrong.
Dawson Engler, Madanlal Musuvathi

Software Checking

Automatic Inference of Class Invariants
Abstract
We present a generic framework for the automatic and modular inference of sound class invariants for class-based object oriented languages. The idea is to derive a sound class invariant as a conservative abstraction of the class semantics. In particular we show how a class invariant can be characterized as the solution of a set of equations extracted from the program source. Once a static analysis for the method bodies is supplied, a solution for the former equation system can be iteratively computed. Thus, the class invariant can be automatically inferred. Moreover, our framework is modular since it allows the derivation of class invariants without any hypothesis on the instantiation context and, in the case of subclassing, without accessing to the parent code.
Francesco Logozzo

Liveness and Completeness

Liveness with Invisible Ranking
Abstract
The method of Invisible Invariants was developed originally in order to verify safety properties of parameterized systems fully automatically. Roughly speaking, the method is based on a small model property that implies it is sufficient to prove some properties on small instantiations of the system, and on a heuristic that generates candidate invariants. Liveness properties usually require well founded ranking, and do not fall within the scope of the small model theorem. In this paper we develop novel proof rules for liveness properties, all of whose proof obligations are of the correct form to be handled by the small model theorem. We then develop abstraction and generalization techniques that allow for fully automatic verification of liveness properties of parameterized systems. We demonstrate the application of the method on several examples.
Yi Fang, Nir Piterman, Amir Pnueli, Lenore Zuck
A Complete Method for the Synthesis of Linear Ranking Functions
Abstract
We present an automated method for proving the termination of an unnested program loop by synthesizing linear ranking functions. The method is complete. Namely, if a linear ranking function exists then it will be discovered by our method. The method relies on the fact that we can obtain the linear ranking functions of the program loop as the solutions of a system of linear inequalities that we derive from the program loop. The method is used as a subroutine in a method for proving termination and other liveness properties of more general programs via transition invariants; see [PR03].
Andreas Podelski, Andrey Rybalchenko
Symbolic Implementation of the Best Transformer
Abstract
This paper shows how to achieve, under certain conditions, abstract-interpretation algorithms that enjoy the best possible precision for a given abstraction. The key idea is a simple process of successive approximation that makes repeated calls to a decision procedure, and obtains the best abstract value for a set of concrete stores that are represented symbolically, using a logical formula.
Thomas Reps, Mooly Sagiv, Greta Yorsh
Model Checking Polygonal Differential Inclusions Using Invariance Kernels
Abstract
Polygonal hybrid systems are a subclass of planar hybrid automata which can be represented by piecewise constant differential inclusions. Here, we identify and compute an important object of such systems’ phase portrait, namely invariance kernels. An invariant set is a set of initial points of trajectories which keep rotating in a cycle forever and the invariance kernel is the largest of such sets. We show that this kernel is a non-convex polygon and we give a non-iterative algorithm for computing the coordinates of its vertices and edges. Moreover, we present a breadth-first search algorithm for solving the reachability problem for such systems. Invariance kernels play an important role in the algorithm.
Gordon J. Pace, Gerardo Schneider
Checking Interval Based Properties for Reactive Systems
Abstract
A reactive system does not terminate and its behaviors are typically defined as a set of infinite sequences of states. In formal verification, a requirement is usually expressed in a logic, and when the models of the logic are also defined as infinite sequences, such as the case for LTL, the satisfaction relation is simply defined by the containment between the set of system behaviors and that of logic models. However, this satisfaction relation does not work for interval temporal logics, where the models can be considered as a set of finite sequences. In this paper, we observe that for different interval based properties, different satisfaction relations are sensible. Two classes of properties are discussed, and accordingly two satisfaction relations are defined, and they are subsequently unified by a more general definition. A tool is developed based on the Spin model checking system to verify the proposed general satisfaction relation for a decidable subset of Discrete Time Duration Calculus.
Pei Yu, Xu Qiwen
Widening Operators for Powerset Domains
Abstract
The finite powerset construction upgrades an abstract domain by allowing for the representation of finite disjunctions of its elements. In this paper we define two generic widening operators for the finite powerset abstract domain. Both widenings are obtained by lifting any widening operator defined on the base-level abstract domain and are parametric with respect to the specification of a few additional operators. We illustrate the proposed techniques by instantiating our widenings on powersets of convex polyhedra, a domain for which no non-trivial widening operator was previously known.
Roberto Bagnara, Patricia M. Hill, Enea Zaffanella

Formal Methods III

Key Note

A Grand Challenge for Computing: Towards Full Reactive Modeling of a Multi-cellular Animal
Abstract
Biological systems can be modeled beneficially as reactive systems, using languages and tools developed for the construction of man-made systems. Our long-term aim is to model a full multi-cellular animal as a reactive system; specifically, the C. elegans nematode worm, which is complex, but very well-defined in terms of anatomy and genetics. The challenge is to construct a full, true-to-all-known-facts, 4-dimensional, fully animated model of the development and behavior of this worm (or of a comparable multi-cellular animal), which is multi-level and interactive, and is easily extendable – even by biologists – as new biological facts are discovered.
The proposal has three premises: (i) that satisfactory frameworks now exist for reactive system modeling and design; (ii) that biological research is ready for an extremely significant transition from analysis (reducing experimental observations to elementary building blocks) to synthesis (integrating the parts into a comprehensive whole), a transition that requires mathematics and computation; and (iii) that the true complexity of the dynamics of biological systems – specifically multi-cellular living organisms – stems from their reactivity.
In earlier work on T-cell reactivity, we addressed the feasibility of modeling biological systems as reactive systems, and the results were very encouraging [1]. Since then, we have turned to two far more complex systems, with the intention of establishing the basis for addressing the admittedly extremely ambitious challenge outlined above. One is modeling T-cell behavior in the thymus [2], using statecharts and Rhapsody, and the other is on VPC fate acquisition in the egg-laying system of C. elegans [3], for which we used LSCs and the Play-Engine [4].
The proposed long term effort could possibly result in an unprecedented tool for the research community, both in biology and in computer science. We feel that much of the research in systems biology will be going this way in the future: grand efforts at using computerized system modeling and analysis techniques for understanding complex biology.
David Harel
Constructing Quantified Invariants via Predicate Abstraction
Abstract
Predicate abstraction provides a powerful tool for verifying properties of infinite-state systems using a combination of a decision procedure for a subset of first-order logic and symbolic methods originally developed for finite-state model checking. We consider models where the system state contains mutable function and predicate state variables. Such a model can describe systems containing arbitrarily large memories, buffers, and arrays of identical processes. We describe a form of predicate abstraction that constructs a formula over a set of universally quantified variables to describe invariant properties of the function state variables. We provide a formal justification of the soundness of our approach and describe how it has been used to verify several hardware and software designs, including a directory-based cache coherence protocol with unbounded FIFO channels.
Shuvendu K. Lahiri, Randal E. Bryant
Analysis of Recursive Game Graphs Using Data Flow Equations
Abstract
Given a finite-state abstraction of a sequential program with potentially recursive procedures and input from the environment, we wish to check statically whether there are input sequences that can drive the system into “bad/good” executions. Pushdown games have been used in recent years for such analyses and there is by now a very rich literature on the subject. (See, e.g., [BS92,Tho95,Wal96,BEM97,Cac02a,CDT02].)
In this paper we use recursive game graphs to model such interprocedural control flow in an open system. These models are intimately related to pushdown systems and pushdown games , but more directly capture the control flow graphs of recursive programs ([AEY01,BGR01,ATM03b]).
We describe alternative algorithms for the well-studied problems of determining both reachability and Büchi winning strategies in such games. Our algorithms are based on solutions to second-order data flow equations, generalizing the Datalog rules used in [AEY01] for analysis of recursive state machines. This offers what we feel is a conceptually simpler view of these well-studied problems and provides another example of the close links between the techniques used in program analysis and those of model checking.
There are also some technical advantages to the equational approach. Like the approach of Cachat [Cac02a], our solution avoids the necessarily exponential-space blow-up incurred by Walukiewicz’s algorithms for pushdown games. However, unlike [Cac02a], our approach does not rely on a representation of the space of winning configurations of a pushdown graph by (alternating) automata. Only “minimal” sets of exits that can be “forced” need to be maintained, and this provides the potential for greater space efficiency. In a sense, our algorithms can be viewed as an “automaton-free” version of the algorithms of [Cac02a].
K. Etessami
Applying Jlint to Space Exploration Software
Abstract
Java is a very successful programming language which is also becoming widespread in embedded systems, where software correctness is critical. Jlint is a simple but highly efficient static analyzer that checks a Java program for several common errors, such as null pointer exceptions, and overflow errors. It also includes checks for multi-threading problems, such as deadlocks and data races. The case study described here shows the effectiveness of Jlint in finding certain faults, including multi-threading problems. Analyzing the reasons for false positives in the multi-threading warnings gives an insight into design patterns commonly used in multi-threaded code. The results show that a few analysis techniques are sufficient to avoid almost all false positives. These techniques include investigating all possible callers and a few code idioms. Verifying the correct application of these patterns is still crucial, because their correct usage is not trivial.
Cyrille Artho, Klaus Havelund
Why AI + ILP Is Good for WCET, but MC Is Not, Nor ILP Alone
Abstract
A combination of Abstract Interpretation (AI) with Integer Linear Programming (ILP) has been successfully used to determine precise upper bounds on the execution times of real-time programs, commonly called worst-case execution times (WCET). The task solved by abstract interpretation is to verify as many local safety properties as possible, safety properties who correspond to the absence of “timing accidents”. Timing accidents, e.g. cache misses, are reasons for the increase of the execution time of an individual instruction in an execution state. This article attempts to give the answer to the frequently encountered claim, “one could have done it by Model Checking (MC)!”. It shows that it is the characteristic property of abstract interpretation, which proves AI to be applicable and successful, namely that it only needs one fixpoint iteration to compute invariants that allow the derivation of many safety properties. MC seems to encounter an exponential state-space explosion when faced with the same problem. ILP alone has also been used to model a processor architecture and a program whose upper bounds for execution times was to be determined. It is argued why the only ILP-only approach found in the literature has not led to success.
Reinhard Wilhelm
Backmatter
Metadaten
Titel
Verification, Model Checking, and Abstract Interpretation
herausgegeben von
Bernhard Steffen
Giorgio Levi
Copyright-Jahr
2004
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-540-24622-0
Print ISBN
978-3-540-20803-7
DOI
https://doi.org/10.1007/b94790