Results 1 -
3 of
3
Type Systems for Closure Conversions
- In The Workshop on Types for Program Analysis
, 1995
"... . We consider the problem of analyzing and proving correct simple closure conversion strategies for a higher-order functional language. We specify the conversions as deductive systems, making use of annotated types to provide constraints which guide the construction of the closures. We exploit the a ..."
Abstract
-
Cited by 24 (0 self)
- Add to MetaCart
. We consider the problem of analyzing and proving correct simple closure conversion strategies for a higher-order functional language. We specify the conversions as deductive systems, making use of annotated types to provide constraints which guide the construction of the closures. We exploit the ability of deductive systems to specify concisely complex relationships between source terms and closure-converted terms. The resulting specifications and proofs are relatively clear and straightforward. The use of deductive systems is central to our work as we can subsequently encode these systems in the LF type theory and then code them in the Elf programming language. The correctness proofs can also be coded in this language, providing machine-checked versions of these proofs. 1 Introduction Closure conversion is the process of transforming functions containing free variables into a closures, a representation of a function that consists of a piece of code for the function and a record con...
Lazy Type Inference for the Strictness Analysis of Lists
, 1994
"... We present a type inference system for the strictness analysis of lists and we show that it can be used as the basis for an efficient algorithm. The algorithm is as accurate as the usual abstract interpretation technique. One distinctive advantage of this approach is that it is not necessary to impo ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
We present a type inference system for the strictness analysis of lists and we show that it can be used as the basis for an efficient algorithm. The algorithm is as accurate as the usual abstract interpretation technique. One distinctive advantage of this approach is that it is not necessary to impose an abstract domain of a particular depth prior to the analysis: the lazy type algorithm will instead explore the part of a potentially infinite domain required to prove the strictness property. 1 Introduction Simple strictness analysis returns information about the fact that the result of a function application is undefined when some of the arguments are undefined. This information can be used in a compiler for a lazy functional language because the argument of a strict function can be evaluated (up to weak head normal form) and passed by value. However a more sophisticated property might be useful in the presence of lists or other recursive data structures which are pervasive in functio...
Ph.D. Thesis Proposal Correctness of Analysis-Based Program Transformations of Functional Languages
"... Interpretation Abstract Interpretation is a formal-semantics-based 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 formal-semantics-based 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 non-standard 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...

