Results 1 
9 of
9
Deriving algorithms from type inference systems: Application to strictness analysis
, 1994
"... The role of nonstandard type inference in static program analysis has been much studied recently. Early work emphasised the efficiency of type inference algorithms and paid little attention to the correctness of the inference system. Recently more powerful inference systems have been investigated b ..."
Abstract

Cited by 26 (8 self)
 Add to MetaCart
The role of nonstandard type inference in static program analysis has been much studied recently. Early work emphasised the efficiency of type inference algorithms and paid little attention to the correctness of the inference system. Recently more powerful inference systems have been investigated but the connection with efficient inference algorithms has been obscured. The contribution of this paper is twofold: first we show how to transform a program logic into an algorithm and, second, we introduce the notion of lazy types and show how to derive an efficient algorithm for strictness analysis. 1 Introduction Two major formal frameworks have been proposed for static analysis of functional languages: abstract interpretation and type inference. A lot of work has been done to characterise formally the correctness and the power of abstract interpretation. However the development of algorithms has not kept pace with the theoretical developments. This is now a major barrier that is preven...
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...
Demand Transformation Analysis for Concurrent Constraint Programs
, 1994
"... Domain In this section we construct a domain of abstract constraints called ACon, which abstracts the domain #(C). In the construction of ACon, we use two domains called D and D V , also introduced in this section, which consist of nonground, downwardsclosed types representing sets of terms in #( ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Domain In this section we construct a domain of abstract constraints called ACon, which abstracts the domain #(C). In the construction of ACon, we use two domains called D and D V , also introduced in this section, which consist of nonground, downwardsclosed types representing sets of terms in #(H V ) and some basic types, such as the set of integers. (H V is ordered by t 1 t 2 if t 1 is a substitution instance of t 2 .) The domain of types is given by D ::= ? j? j j c(D; : : : ; D) j numj D D j :D. Program variables are not mentioned by types in D. In the syntax of D, c ranges over constructor symbols and is a fixpoint operator. Type variables are given by 2 TV , which are used only for fixpoint constructions. The base types ?, ? (read, "nonvar"), and num represent H V , H V n V , and the set of integers, respectively. Example 3.1. fX = ?; Y = ?g is an element of ACon representing the downwardsclosed set of constraints where X is constrained arbitrarily (including not at all...
Efficient Abstract Interpretation using ComponentWise Homomorphisms
"... Fixed point based abstract interpretation requires compact representations of functions. In general, finding a fixed point requires exponential time. Good representations allow the reduction of the fixed point solvers computational complexity. One approach for obtaining compact representations is th ..."
Abstract
 Add to MetaCart
(Show Context)
Fixed point based abstract interpretation requires compact representations of functions. In general, finding a fixed point requires exponential time. Good representations allow the reduction of the fixed point solvers computational complexity. One approach for obtaining compact representations is the use of special classes of functions. In this paper, we focus on the class of componentwise homomorphisms. We show that this class of functions gives more compact representations than componentwise additive functions. 1.
Lazy types and Program Analysis
, 1994
"... Approaches to static analysis based on nonstandard type systems have received considerable interest recently. Most work has concentrated on the relationship between such analyses and abstract interpretation. In this paper, we focus on the problem of producing efficient algorithms from such type ..."
Abstract
 Add to MetaCart
(Show Context)
Approaches to static analysis based on nonstandard type systems have received considerable interest recently. Most work has concentrated on the relationship between such analyses and abstract interpretation. In this paper, we focus on the problem of producing efficient algorithms from such typebased analyses. The key idea is the notion of lazy types. We present the basic notions in the context of a higherorder strictness analysis of listprocessing functions. We also sketch some recent work concerning a general framework for program analysis based on these ideas. We conclude with some experimental results. 1 Introduction Two major formal frameworks have been proposed for static analysis of functional languages: abstract interpretation and type inference. A lot of work has been done to characterise formally the correctness and the power of abstract interpretation. However the development of algorithms has not kept pace with the theoretical developments. This is now a major ba...
HeadStrictness is Not a Monotonic Property
 Information Processing Letters
, 1992
"... A property P of a language is said to be definable by abstract interpretation if there is a monotonic map abs from the domain of standard semantics to an abstract domain A of finite height, and a partition of the abstract domain into two parts AP and AnonP , such that any value has property P if an ..."
Abstract
 Add to MetaCart
A property P of a language is said to be definable by abstract interpretation if there is a monotonic map abs from the domain of standard semantics to an abstract domain A of finite height, and a partition of the abstract domain into two parts AP and AnonP , such that any value has property P if and only if abs maps it to an element of AP . Headstrictness is a property of functions over lists which asserts, roughly speaking, that whenever the function looks at some prefix of a list, it looks every element in that prefix. We prove that headstrictness is not definable by abstract interpretation. Keywords: strictness analysis, abstract interpretation 1 INTRODUCTION 2 1 Introduction Given a programming language L with standard semantics [[\Delta]] D : L ! D, an abstract interpretation [2, 6] of L is a semantics [[\Delta]] A : L ! A, together with a function abs : D ! A. A represents some property of programs in L, [[\Delta]] A is the static computation of that property, and abs is ...
A New Framework for Strictness Analysis Using Demand Propagation
"... This paper presents a novel approach to strictness analysis called abstract demand propagation, approach developed for the implementation of lazy functional programming languages on parallel machines. Although some work on strictness analysis using demand propagation has been done before, the presen ..."
Abstract
 Add to MetaCart
This paper presents a novel approach to strictness analysis called abstract demand propagation, approach developed for the implementation of lazy functional programming languages on parallel machines. Although some work on strictness analysis using demand propagation has been done before, the present work is original in that it gives a precise interpretation of the notions of demands and demand propagation using an exact nonstandard denotational semantics. The intuition behind this semantics is that it represents a form of inverse computation, i.e., it determines the least amount of information needed to produce at least some required (demanded) result. Viewing demand propagation as a form of inverse computation allows to establish the soundness of our nonstandard semantics by formally relating it with the standard semantics. In order to define a compiletime analysis based on demand propagation, safety and termination must be ensured. This is done by defining an abstract interpreta...