The CLP( R ) language and system
ACM Transactions on Programming Languages and Systems (TOPLAS)
Projecting CLP( R ) constraints
Selected papers of international conference on Fifth generation computer systems 92
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principles of Program Analysis
Principles of Program Analysis
HOL Light: A Tutorial Introduction
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
TACAS '99 Proceedings of the 5th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Constraint Logic Programming Applied to Model Checking
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Infinite State Model Checking by Abstract Interpretation and Program Specialisation
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Constraint Logic Programming for Local and Symbolic Model-Checking
CL '00 Proceedings of the First International Conference on Computational Logic
Efficient Model Checking Using Tabled Resolution
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Experience with Predicate Abstraction
CAV '99 Proceedings of the 11th International Conference on Computer Aided Verification
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
A constraint-based approach for specification and verification of real-time systems
RTSS '97 Proceedings of the 18th IEEE Real-Time Systems Symposium
Modular Verification of Software Components in C
IEEE Transactions on Software Engineering
Polymorphic predicate abstraction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Tabled resolution + constraints: a recipe for model checking real-time systems
RTSS'10 Proceedings of the 21st IEEE conference on Real-time systems symposium
ESC/Java2: uniting ESC/Java and JML
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
ARMC: the logical choice for software model checking with abstraction refinement
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
We present an implementation of symbolic reachability analysis with the features of compositionality, and intermittent abstraction, in the sense of pefrorming approximation only at selected program points, if at all. The key advantages of compositionality are well known, while those of intermittent abstraction are that the abstract domain required to ensure convergence of the algorithm can be minimized, and that the cost of performing abstractions, now being intermittent, is reduced. We start by formulating the problem in CLP, and first obtain compositionality. We then address two key efficiency challenges. The first is that reasoning is required about the strongest-postcondition operator associated with an arbitrarily long program fragment. This essentially means dealing with constraints over an unbounded number of variables describing the states between the start and end of the program fragment at hand. This is addressed by using the variable elimination or projection mechanism that is implicit in CLP systems. The second challenge is termination, that is, to determine which subgoals are redundant. We address this by a novel formulation of memoization called coinductive tabling. We finally evaluate the method experimentally. At one extreme, where abstraction is performed at every step, we compare against a model checker. At the other extreme, where no abstraction is performed, we compare against a program verifier. Of course, our method provides for the middle ground, with a flexible combination of abstraction and Hoare-style reasoning with predicate transformers and loop-invariants.