Results 1  10
of
11
Simplification by cooperating decision procedures
 ACM Transactions on Programming Languages and Systems
, 1979
"... A method for combining decision procedures for several theories into a single decision procedure for their combination is described, and a simplifier based on this method is discussed. The simplifier finds a normal form for any expression formed from individual variables, the usual Boolean connectiv ..."
Abstract

Cited by 396 (1 self)
 Add to MetaCart
A method for combining decision procedures for several theories into a single decision procedure for their combination is described, and a simplifier based on this method is discussed. The simplifier finds a normal form for any expression formed from individual variables, the usual Boolean connectives, the equality predicate =, the conditional function ifthenelse, the integers, the arithmetic functions and predicates +,, and _<, the Lisp functions and predicates car, cdr, cons, and atom, the functions store and select for storing into and selecting from arrays, and uninterpreted function symbols. If the expression is a theorem it is simplified to the constant true, so the simplifier can be used as a decision procedure for the quantifierfree theory containing these functions and predicates. The simplifier is currently used in the Stanford Pascal Verifier.
Program Restructuring as an Aid to Software Maintenance
, 1991
"... Maintenance tends to degrade the structure of software, ultimately making maintenance more costly. At times, then, it is worthwhile to manipulate the structure of a system to make changes easier. However, it is shown that manual restructuring is an errorprone and expensive activity. By separating ..."
Abstract

Cited by 87 (9 self)
 Add to MetaCart
Maintenance tends to degrade the structure of software, ultimately making maintenance more costly. At times, then, it is worthwhile to manipulate the structure of a system to make changes easier. However, it is shown that manual restructuring is an errorprone and expensive activity. By separating structural manipulations from other maintenance activities, the semantics of a system can be held constant by a tool, assuring that no errors are introduced by restructuring. To allow the maintenance team to focus on the aspects of restructuring and maintenance requiring human judgment, a transformationbased tool can be providedbased on a model that exploits preserving data flowdependence and control flowdependenceto automate the repetitive, errorprone, and computationally demanding aspects of re...
A Decision Procedure for an Extensional Theory of Arrays
 In 16th IEEE Symposium on Logic in Computer Science
, 2001
"... A decision procedure for a theory of arrays is of interest for applications in formal verification, program analysis, and automated theoremproving. This paper presents a decision procedure for an extensional theory of arrays and proves it correct. 1. ..."
Abstract

Cited by 74 (14 self)
 Add to MetaCart
A decision procedure for a theory of arrays is of interest for applications in formal verification, program analysis, and automated theoremproving. This paper presents a decision procedure for an extensional theory of arrays and proves it correct. 1.
LightWeight Theorem Proving for Debugging and Verifying Units of Code
, 2003
"... Software bugs are very difficult to detect even in small units of code. Several techniques to debug or prove correct such units are based on the generation of a set of formulae whose unsatisfiability reveals the presence of an error. These techniques assume the availability of a theorem prover capab ..."
Abstract

Cited by 47 (25 self)
 Add to MetaCart
Software bugs are very difficult to detect even in small units of code. Several techniques to debug or prove correct such units are based on the generation of a set of formulae whose unsatisfiability reveals the presence of an error. These techniques assume the availability of a theorem prover capable of automatically discharging the resulting proof obligations. Building such a tool is a difficult, long, and errorprone activity. In this paper, we describe techniques to build provers which are highly automatic and flexible by combining stateoftheart superposition theorem provers and BDDs. We report experimental results on formulae extracted from the debugging of C functions manipulating pointers showing that an implementation of our techniques can discharge proof obligations which cannot be handled by Simplify (the theorem prover used in the ESC/Java tool) and performs much better on others. 1.
Decision Procedures for Extensions of the Theory of Arrays
 Annals of Mathematics and Artificial Intelligence
"... Abstract The theory of arrays, introduced by McCarthy in his seminal paper “Towards a mathematical science of computation”, is central to Computer Science. Unfortunately, the theory alone is not sufficient for many important verification applications such as program analysis. Motivated by this obser ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
Abstract The theory of arrays, introduced by McCarthy in his seminal paper “Towards a mathematical science of computation”, is central to Computer Science. Unfortunately, the theory alone is not sufficient for many important verification applications such as program analysis. Motivated by this observation, we study extensions of the theory of arrays whose satisfiability problem (i.e. checking the satisfiability of conjunctions of ground literals) is decidable. In particular, we consider extensions where the indexes of arrays have the algebraic structure of Presburger Arithmetic and the theory of arrays is augmented with axioms characterizing additional symbols such as dimension, sortedness, or the domain of definition of arrays. We provide methods for integrating available decision procedures for the theory of arrays and Presburger Arithmetic with automatic instantiation strategies which allow us to reduce the satisfiability problem for the extension of the theory of arrays to that of the theories decided by the available procedures. Our approach aims to reuse as much as possible existing techniques so as to ease the implementation of the proposed methods. To this end, we show how to use modeltheoretic, rewritingbased theorem proving
Equational verification of cache blocking in lu decomposition using kleene algebra with tests
, 2002
"... In a recent paper of Mateev et al. (2001), a new technique for program analysis called fractal symbolic analysis was introduced and applied to verify the correctness of a series of sourcelevel transformations for cache blocking in LU decomposition with partial pivoting. It was argued in that paper ..."
Abstract

Cited by 12 (4 self)
 Add to MetaCart
In a recent paper of Mateev et al. (2001), a new technique for program analysis called fractal symbolic analysis was introduced and applied to verify the correctness of a series of sourcelevel transformations for cache blocking in LU decomposition with partial pivoting. It was argued in that paper that traditional techniques are inadequate because the transformations break definitionuse dependencies. We show how the task can be accomplished purely equationally using Kleene algebra with tests. 1
The Combination Problem in Automated Reasoning
, 2004
"... Decision procedures are algorithms that can reason about the validity or satisfiability of logical formulae in a given decidable theory, and that always terminate with a positive or negative answer. ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
Decision procedures are algorithms that can reason about the validity or satisfiability of logical formulae in a given decidable theory, and that always terminate with a positive or negative answer.
Deciding extension of the theory of arrays by integrating decision procedures and instantiation strategies
 IN JELIA
, 2006
"... The theory of arrays, introduced by McCarthy in his seminal paper “Toward a mathematical science of computation”, is central to Computer Science. Unfortunately, the theory alone is not sufficient for many important verification applications such as program analysis. Motivated by this observation, ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
The theory of arrays, introduced by McCarthy in his seminal paper “Toward a mathematical science of computation”, is central to Computer Science. Unfortunately, the theory alone is not sufficient for many important verification applications such as program analysis. Motivated by this observation, we study extensions of the theory of arrays whose satisfiability problem (i.e. checking the satisfiability of conjunctions of ground literals) is decidable. In particular, we consider extensions where the indexes of arrays has the algebraic structure of Presburger Arithmetic and the theory of arrays is augmented with axioms characterizing additional symbols such as dimension, sortedness, or the domain of definition of arrays. We provide methods for integrating available decision procedures for the theory of arrays and Presburger Arithmetic with automatic instantiation strategies which allow us to reduce the satisfiability problem for the extension of the theory of arrays to that of the theories decided by the available procedures. Our approach aims to reuse as much as possible existing techniques so to ease the implementation of the proposed methods. To this end, we show how to use both modeltheoretic and rewritingbased theorem proving (i.e., superposition) techniques to implement the instantiation strategies of the various extensions.
An axiomatization of arrays for Kleene algebra with tests
 In: Proc. 9th Int. Conf. Relational Methods in Computer Scienceand 4th Int. Workshop Applications of Kleene Algebra (RelMiCS/AKA’06). Volume 4136 of LNCS
, 2006
"... Abstract. The formal analysis of programs with arrays is a notoriously difficult problem due largely to aliasing considerations. In this paper we augment the rules of Kleene algebra with tests (KAT) with rules for the equational manipulation of arrays in the style of schematic KAT. These rules captu ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Abstract. The formal analysis of programs with arrays is a notoriously difficult problem due largely to aliasing considerations. In this paper we augment the rules of Kleene algebra with tests (KAT) with rules for the equational manipulation of arrays in the style of schematic KAT. These rules capture and make explicit the essence of subscript aliasing, where two array accesses can be to the same element. We prove the soundness of our rules, as well as illustrate their usefulness with several examples, including a complete proof of the correctness of heapsort. 1
Building Satisfiability Procedures for Verification: The Case Study of Sorting Algorithms
 In LOPSTR’03
, 2003
"... Abstract. This paper describes the development of some decision procedures which are useful for the automatic verification of imperative algorithms manipulating arrays. Our approach—based on the superposition framework—consists of extending an available satisfiability for infinite arrays to procedur ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. This paper describes the development of some decision procedures which are useful for the automatic verification of imperative algorithms manipulating arrays. Our approach—based on the superposition framework—consists of extending an available satisfiability for infinite arrays to procedures for finite arrays, finite arrays with permutations, and their extensions with userdefined symbols. The Nelson and Oppen combination schema is used to incorporate a form of arithmetic reasoning and we propose an heuristic extension whereby symbols—defined by using both the theory of arrays and arithmetic—can be handled. The procedures so obtained are successfully put to work to automatically discharge the proof obligations arising in the correctness of the algorithms Find, Insertion sort, and Heap sort. While much existing research on decision procedures has been done in isolation or in the context of combination problems, the work described in this paper seems to be one of the few attempts to widen the scope of decision procedures aimed at building more flexible and extensible tools for verification. 1