Results 1  10
of
25
Parametric Shape Analysis via 3Valued Logic
, 2001
"... Shape Analysis concerns the problem of determining "shape invariants"... ..."
Abstract

Cited by 651 (80 self)
 Add to MetaCart
Shape Analysis concerns the problem of determining "shape invariants"...
The Spec# Programming System: An Overview
, 2004
"... Spec# is the latest in a long line of work on programming languages and systems aimed at improving the development of correct software. This paper describes the goals and architecture of the Spec# programming system, consisting of the objectoriented Spec# programming language, the Spec# compiler ..."
Abstract

Cited by 539 (50 self)
 Add to MetaCart
Spec# is the latest in a long line of work on programming languages and systems aimed at improving the development of correct software. This paper describes the goals and architecture of the Spec# programming system, consisting of the objectoriented Spec# programming language, the Spec# compiler, and the Boogie static program verifier. The language includes constructs for writing specifications that capture programmer intentions about how methods and data are to be used, the compiler emits runtime checks to enforce these specifications, and the verifier can check the consistency between a program and its specifications. The Spec#
Extended static checking
 SRC RESEARCH REPORT 159, COMPAQ SYSTEMS RESEARCH CENTER
, 1998
"... ..."
(Show Context)
Tutorial Notes on Partial Evaluation
 Proceedings of the Twentieth Annual ACM Symposium on Principles of Programming Languages
, 1993
"... The last years have witnessed a flurry of new results in the area of partial evaluation. These tutorial notes survey the field and present a critical assessment of the state of the art. 1 Introduction Partial evaluation is a sourcetosource program transformation technique for specializing program ..."
Abstract

Cited by 250 (61 self)
 Add to MetaCart
(Show Context)
The last years have witnessed a flurry of new results in the area of partial evaluation. These tutorial notes survey the field and present a critical assessment of the state of the art. 1 Introduction Partial evaluation is a sourcetosource program transformation technique for specializing programs with respect to parts of their input. In essence, partial evaluation removes layers of interpretation. In the most general sense, an interpreter can be defined as a program whose control flow is determined by its input data. As Abelson points out, [43, Foreword], even programs that are not themselves interpreters have important interpreterlike pieces. These pieces contain both compiletime and runtime constructs. Partial evaluation identifies and eliminates the compiletime constructs. 1.1 A complete example We consider a function producing formatted text. Such functions exist in most programming languages (e.g., format in Lisp and printf in C). Figure 1 displays a formatting functio...
Putting static analysis to work for verification: A case study
 In Int. Symp. on Softw. Testing and Analysis
, 2000
"... Abstract We study how program analysis can be used to:* Automatically prove partial correctness of correct programs.* Discover, locate, and diagnose bugs in incorrect programs. Specifically, we present an algorithm that analyzes sorting programs that manipulate linked lists. A prototype of the algor ..."
Abstract

Cited by 86 (19 self)
 Add to MetaCart
(Show Context)
Abstract We study how program analysis can be used to:* Automatically prove partial correctness of correct programs.* Discover, locate, and diagnose bugs in incorrect programs. Specifically, we present an algorithm that analyzes sorting programs that manipulate linked lists. A prototype of the algorithm has been implemented. We show that the algorithm is sufficiently precise to discover that (correct versions) of bubblesort and insertionsort procedures do, in fact, produce correctly sorted lists as outputs, and that the invariant "issorted " is maintained by listmanipulation operations such as elementinsertion, elementdeletion, and even destructive list reversal and merging of two sorted lists. When we run the algorithm on erroneous versions of bubblesort and insertionsort procedures, it is able to discover and sometimes even locate and diagnose the error. 1 Introduction This paper shows that static analysis can be employed to* Automatically prove partial correctness of correct programs.*
Nonresolution theorem proving
 Artificial Intelligence
, 1977
"... This talk reviews those efforts in automatic theorem proving, during the past few years, which have emphasized techniques other than resolution. These include: knowledge bases, natural deduction, reduction, (rewrite rules), typing, procedures, advice, controlled forward chaining, algebraic simplific ..."
Abstract

Cited by 70 (3 self)
 Add to MetaCart
(Show Context)
This talk reviews those efforts in automatic theorem proving, during the past few years, which have emphasized techniques other than resolution. These include: knowledge bases, natural deduction, reduction, (rewrite rules), typing, procedures, advice, controlled forward chaining, algebraic simplification, builtin associativity and commutativity, models, analogy, and manmachine systems. Examples are given and suggestions are made for future work. 1.
Proving Theorems about LISP Functions
, 1975
"... Program verification is the idea that properties of programs can be precisely stated and proved in the mathematical sense. In this paper, some simple heuristics combining evaluation and mathematical induction are described, which the authors have implemented in a program that automatically proves a ..."
Abstract

Cited by 56 (2 self)
 Add to MetaCart
Program verification is the idea that properties of programs can be precisely stated and proved in the mathematical sense. In this paper, some simple heuristics combining evaluation and mathematical induction are described, which the authors have implemented in a program that automatically proves a wide variety of theorems about recursive LISP functions. The method the program uses to generate induction formulas is described at length. The theorems proved by the program include that REVERSE is its own inverse and that a particular SORT program is correct. A list of theorems proved by the program is given. key words and phrases: LISP, automatic theoremproving, structural induction, program verification cr categories: 3.64, 4.22, 5.21 1 Introduction We are concerned with proving theorems in a firstorder theory of lists, akin to the elementary theory of numbers. We use a subset of LISP as our language because recursive list processing functions are easy to write in LISP and because ...
Introduction to the OBDD Algorithm for the ATP Community
, 1992
"... We describe in terms familiar to the automated reasoning community the graphbased algorithm for deciding propositional equivalence published by R.E. Bryant in 1986. Such algorithm, based on ordered binary decision diagrams or OBDDs, are currently the fastest known ways to decide whether two proposi ..."
Abstract

Cited by 10 (1 self)
 Add to MetaCart
(Show Context)
We describe in terms familiar to the automated reasoning community the graphbased algorithm for deciding propositional equivalence published by R.E. Bryant in 1986. Such algorithm, based on ordered binary decision diagrams or OBDDs, are currently the fastest known ways to decide whether two propositional expressions are equivalent and are generally hundreds or thousands of times faster on such problems than most automatic theorem proving systems. An OBDD is a normalized IFthenelse expression in which the tests down any branch are ascending in some previously chosen fixed order. Such IF expressions represent a canonical form for propositional expressions. Three coding tricks make it extremely efficient to manipulate canonical IF expressions. The first is that two canonicalized expressions can be rapidly combined to form the canonicalized form of their disjunction (conjunction, exclusiveor, etc) by exploiting the fact that the tests are ordered. The second is that every distinct cano...
An overview of the Jahob analysis system: Project goals and current status
 In NSF Next Generation Software Workshop
, 2006
"... We present an overview of the Jahob system for modular analysis of data structure properties. Jahob uses a subset of Java as the implementation language and annotations with formulas in a subset of Isabelle as the specification language. It uses monadic secondorder logic over trees to reason about ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
(Show Context)
We present an overview of the Jahob system for modular analysis of data structure properties. Jahob uses a subset of Java as the implementation language and annotations with formulas in a subset of Isabelle as the specification language. It uses monadic secondorder logic over trees to reason about reachability in linked data structures, the Isabelle theorem prover and NelsonOppen style theorem provers to reason about highlevel properties and arrays, and a new technique to combine reasoning about constraints on uninterpreted function symbols with other decision procedures. It also incorporates new decision procedures for reasoning about sets with cardinality constraints. The system can infer loop invariants using new symbolic shape analysis. Initial results in the use of our system are promising; we are continuing to develop and evaluate it. 1.
An Evaluation of the Effectiveness of Symbolic Testing
 Software  Practice and Experience
, 1978
"... The effectiveness in discovering errors of symbolic evaluation and of testing and static program analysis are studied. The three techniques are applied to a diverse collection of programs and the results compared. Symbolic evaluation is used to carry out symbolic testing and to generate symbolic sys ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
The effectiveness in discovering errors of symbolic evaluation and of testing and static program analysis are studied. The three techniques are applied to a diverse collection of programs and the results compared. Symbolic evaluation is used to carry out symbolic testing and to generate symbolic systems of path predicates. The use of the predicates for automated test data selection is analysed. Several conventional types of program testing strategies are evaluated. The strategies include branch testing, structured testing and testing on input values having special properties. The static source analysis techniques that are studied include anomaly analysis and interface analysis. Examples are included which describe typical situations in which one technique is reliable but another unreliable. The effectiveness of symbolic testing is compared with testing on actual data and with the use of an integrated methodology that includes both testing and static source analysis. Situations in which symbolic testing is difficult to apply or not effective are discussed. Different ways in which symbolic evaluation can be used for generating test data are described. Those ways for which it is most effective are isolated. The paper concludes with a discussion of the most effective uses to which symbolic evaluation can be put in an integrated system which contains all three of the validation techniques that are studied.