Results 1  10
of
13
Simple Relational Correctness Proofs for Static Analyses and Program Transformations
, 2004
"... We show how some classical static analyses for imperative programs, and the optimizing transformations which they enable, may be expressed and proved correct using elementary logical and denotational techniques. The key ingredients are an interpretation of program properties as relations, rather tha ..."
Abstract

Cited by 82 (9 self)
 Add to MetaCart
We show how some classical static analyses for imperative programs, and the optimizing transformations which they enable, may be expressed and proved correct using elementary logical and denotational techniques. The key ingredients are an interpretation of program properties as relations, rather than predicates, and a realization that although many program analyses are traditionally formulated in very intensional terms, the associated transformations are actually enabled by more liberal extensional properties.
TypeBased Useless Variable Elimination
, 1999
"... We show a typebased method for useless variable elimination, i.e., transformation that eliminates variables whose values contribute nothing to the final outcome of a computation, and prove its correctness. The algorithm is a surprisingly simple extension of the usual type reconstruction algorithm. ..."
Abstract

Cited by 20 (4 self)
 Add to MetaCart
We show a typebased method for useless variable elimination, i.e., transformation that eliminates variables whose values contribute nothing to the final outcome of a computation, and prove its correctness. The algorithm is a surprisingly simple extension of the usual type reconstruction algorithm. Our method seems more attractive than Wand and Siveroni's 0CFAbased method in many respects. First, it is efficient: it runs in time almost linear in the size of an input expression for a simplytyped calculus, while the 0CFAbased method may require a cubic time. Second, our transformation can be shown to be optimal among those that preserve welltypedness, both for the simplytyped language and for an MLstyle polymorphicallytyped language. On the other hand, the 0CFAbased method is not optimal for the polymophicallytyped language. ANY OTHER IDENTIFYING INFORMATION OF THIS REPORT Summary has been submitted for publication. Uptodate version of this report will be available through ...
Eliminating dead code on recursive data
 Science of Computer Programming
, 1999
"... Abstract. This paper describes a general and powerful method for dead code analysis and elimination in the presence of recursive data constructions. We represent partially dead recursive data using liveness patterns based on general regular tree grammars extended with the notion of live and dead, an ..."
Abstract

Cited by 14 (4 self)
 Add to MetaCart
Abstract. This paper describes a general and powerful method for dead code analysis and elimination in the presence of recursive data constructions. We represent partially dead recursive data using liveness patterns based on general regular tree grammars extended with the notion of live and dead, and we formulate the analysis as computing liveness patterns at all program points based on program semantics. This analysis yields a most precise liveness pattern for the data at each program point, which is signi cantly more precise than results from previous methods. The analysis algorithm takes cubic time in terms of the size of the program in the worst case but is very e cient in practice, as shown by our prototype implementation. The analysis results are used to identify and eliminate dead code. The general framework for representing and analyzing properties of recursive data structures using general regular tree grammars applies to other analyses as well. 1
Boolean constraints for bindingtime analysis
 In Programs as Data Objects II, number 2053 in Lecture Notes in Computer Science
, 2001
"... ..."
Removing Redundant Arguments of Functions
 In 9th International Conference on Algebraic Methodology And Software Technology, AMAST 2002, H. Kirchner and C. Ringeissen, Eds. Lecture Notes in Computer Science
, 2002
"... The application of automatic transformation processes during the formal development and optimization of programs can introduce encumbrances in the generated code that programmers usually (or presumably) do not write. An example is the introduction of redundant arguments in the functions defined in t ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
The application of automatic transformation processes during the formal development and optimization of programs can introduce encumbrances in the generated code that programmers usually (or presumably) do not write. An example is the introduction of redundant arguments in the functions defined in the program. Redundancy of a parameter means that replacing it by any expression does not change the result. In this work, we provide a method for the analysis and elimination of redundant arguments in term rewriting systems as a model for the programs that can be written in more sophisticated languages.
The TkInter homepage. http://www.python.org/topics/tkinter
 Journal of Functional programming
, 2001
"... In this paper we present two type inference systems for detecting uselesscode in higherorder typed functional programs. Type inference can be performed in an efficient and complete way, by reducing it to the solution of a system of constraints. We also give a uselesscode elimination algorithm whi ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
In this paper we present two type inference systems for detecting uselesscode in higherorder typed functional programs. Type inference can be performed in an efficient and complete way, by reducing it to the solution of a system of constraints. We also give a uselesscode elimination algorithm which is based on a combined use of these type inference systems. The main application of the technique is the optimization of programs extracted from proofs in logical frameworks, but it could be used as well in the elimination of uselesscode determined by program transformations. Capsule Review Dead code is a subterm M of a term t = C[M] which does not matter to computation, that is, which may be replaced by any other term of the same type without altering the observational behaviour of the program: C[M] =obs C[N] for any N with the type of M. Deadcode may be replaced by dummy variable, or even completely removed, in order to optimize a program. The interest in deadcode by the authors started as a byproduct of a proof system which generated programs meeting a specification out of proofs that the specification is satisfiable.
UselessCode Elimination and Program Slicing for the PiCalculus
, 2003
"... In this paper, we study program transformations called uselesscode elimination and program slicing in the context of the #calculus. ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
In this paper, we study program transformations called uselesscode elimination and program slicing in the context of the #calculus.
Ph.D. Thesis Proposal Correctness of AnalysisBased Program Transformations of Functional Languages
"... Interpretation Abstract Interpretation is a formalsemanticsbased methodology for deriving provably correct program analyses. The main idea, formalised by Cousot and Cousot [CC77], is that a program can be given different interpretations by modifying the domain of values that it manipulates. The c ..."
Abstract
 Add to MetaCart
Interpretation Abstract Interpretation is a formalsemanticsbased methodology for deriving provably correct program analyses. The main idea, formalised by Cousot and Cousot [CC77], is that a program can be given different interpretations by modifying the domain of values that it manipulates. The concrete interpretation, defined by the standard semantics, gives exact information about the behaviour of a program. When the initial set of values is replaced by elements that denote a particular property (abstract values) and the derivation (evaluation) rules are modified accordingly, the abstract interpretation  now defined by a nonstandard semantics  calculates information that approximates the behaviour of the concrete interpretation regarding this particular property. An abstract interpretation generates abstract traces. Properties defined on concrete traces need small changes to work with their abstract counterparts. Abstraction reduces the size and the detail of information in th...
Strategies and Analysis Techniques for Functional Program Optimization
, 2003
"... Computer systems play an important role in the modern information society. However, the low quality of software and its low level of abstraction, inhibit the necessary confidence of final users and system developers in software engineering. Correctness of computer programs by a mathematical theory o ..."
Abstract
 Add to MetaCart
Computer systems play an important role in the modern information society. However, the low quality of software and its low level of abstraction, inhibit the necessary confidence of final users and system developers in software engineering. Correctness of computer programs by a mathematical theory of computation is the fundamental concern of the theory of programming and of its application in largescale software engineering. Formal methods provide software engineering with the suitable scientific and technological framework to become a real engineering, as predictable as civil or electrical engineering are. Indeed, the use of declarative rulebased programming languages during all program development stages ensures that correct and certified formal methodologies are followed during the whole software production process.