Results 1 - 10
of
11
Type and effect systems
- ACM Computing Surveys
, 1999
"... Abstract. The design and implementation of a correct system can benefit from employing static techniques for ensuring that the dynamic behaviour satisfies the specification. Many programming languages incorporate types for ensuring that certain operations are only applied to data of the appropriate ..."
Abstract
-
Cited by 31 (0 self)
- Add to MetaCart
Abstract. The design and implementation of a correct system can benefit from employing static techniques for ensuring that the dynamic behaviour satisfies the specification. Many programming languages incorporate types for ensuring that certain operations are only applied to data of the appropriate form. A natural extension of type checking techniques is to enrich the types with annotations and effects that further describe intensional aspects of the dynamic behaviour.
Optimal domains for disjunctive abstract interpretation
- Sci. Comput. Program
, 1998
"... In the context of standard abstract interpretation theory, we define the inverse operation to the disjunctive completion of abstract domains, introducing the notion of least disjunctive basis of an abstract domain D. This is the most abstract domain inducing the same disjunctive completion as D. We ..."
Abstract
-
Cited by 24 (15 self)
- Add to MetaCart
In the context of standard abstract interpretation theory, we define the inverse operation to the disjunctive completion of abstract domains, introducing the notion of least disjunctive basis of an abstract domain D. This is the most abstract domain inducing the same disjunctive completion as D. We show that the least disjunctive basis exists in most cases, and study its properties, also in relation with reduced product and complementation of abstract domains. The resulting framework provides advanced algebraic methodologies for abstract domain manipulation and optimization. These notions are applied to well-known abstract domains for static analysis of functional and logic programming languages.
Proving the Correctness of Compiler Optimisations Based on a Global Analysis: A Study of Strictness Analysis
, 1992
"... A substantial amount of work has been devoted to the proof of correctness of various program analyses but much less attention has been paid to the correctness of compiler optimisations based on these analyses. In this paper we tackle the problem in the context of strictness analysis for lazy functio ..."
Abstract
-
Cited by 15 (3 self)
- Add to MetaCart
A substantial amount of work has been devoted to the proof of correctness of various program analyses but much less attention has been paid to the correctness of compiler optimisations based on these analyses. In this paper we tackle the problem in the context of strictness analysis for lazy functional languages. We show that compiler optimisations based on strictness analysis can be expressed formally in the functional framework using continuations. This formal presentation has two benefits: it allows us to give a rigorous correctness proof of the optimised compiler; and it exposes the various optimisations made possible by a strictness analysis. 1 Introduction Realistic compilers for imperative or functional languages include a number of optimisations based on non-trivial global analyses. Proving the correctness of such optimising compilers can be done in three steps: 1. proving the correctness of the original (unoptimised) compiler; Correspondence regarding this paper should be ...
Strictness and Totality Analysis
- In Static Analysis, LNCS 864
, 1994
"... We definea novel inference system for strictness and totality analysis for the simplytyped lazy lambda-calculus with constants and fixpoints. Strictness information identifies those terms that definitely denote bottom (i.e. do not evaluate to WHNF) whereas totality information identifies those terms ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
We definea novel inference system for strictness and totality analysis for the simplytyped lazy lambda-calculus with constants and fixpoints. Strictness information identifies those terms that definitely denote bottom (i.e. do not evaluate to WHNF) whereas totality information identifies those terms that definitely do not denote bottom (i.e. do evaluate to WHNF). The analysis is presented as an annotated type system allowing conjunctions only at "top-level". We give examples of its use and prove the correctness with respect to a natural-style operational semantics. 1 Introduction Strictness analysis has proved useful in the implementation of lazy functional languages as Miranda, Lazy ML and Haskell: when a function is strict it is safe to evaluate its argument before performing the function call. Totality analysis is equally useful but has not be adopted so widely: if the argument to a function is known to terminate then it is safe to evaluate it before performing the function call [1...
Compositional Optimization of Disjunctive Abstract Interpretations
- Proc. of the 1996 European Symposium on Programming, volume 1058 of Lecture Notes in Computer Science
, 1996
"... Interpretations Roberto Giacobazzi ? Francesco Ranzato ?? ? Dipartimento di Informatica, Universit`a di Pisa Corso Italia 40, 56125 Pisa, Italy giaco@di.unipi.it ?? Dipartimento di Matematica Pura ed Applicata, Universit`a di Padova Via Belzoni 7, 35131 Padova, Italy franz@hilbert.math.unipd ..."
Abstract
-
Cited by 10 (2 self)
- Add to MetaCart
Interpretations Roberto Giacobazzi ? Francesco Ranzato ?? ? Dipartimento di Informatica, Universit`a di Pisa Corso Italia 40, 56125 Pisa, Italy giaco@di.unipi.it ?? Dipartimento di Matematica Pura ed Applicata, Universit`a di Padova Via Belzoni 7, 35131 Padova, Italy franz@hilbert.math.unipd.it Abstract. We define the inverse operation for disjunctive completion, introducing the notion of least disjunctive basis for an abstract domain D: this is the most abstract domain inducing the same disjunctive completion as D. We show that the least disjunctive basis exists in most cases, and study its properties in relation with reduced product of abstract interpretations. The resulting framework is powerful enough to be applied to arbitrary abstract domains for analysis, providing advanced algebraic methods for domain manipulation and optimization. These notions are applied to abstract domains for analysis of functional and logic programming languages. 1 Introduction It is widely ackn...
Strictness and Totality Analysis with Conjunction
- In TAPSOFT'95, LNCS 915
, 1995
"... We extend the strictness and totality analysis of [12] by allowing conjunction at all levels rather than at the top-level. We prove the strictness and totality analysis correct with respect to a denotational semantics and finally construct an algorithm for inferring the strictness and totality prope ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
We extend the strictness and totality analysis of [12] by allowing conjunction at all levels rather than at the top-level. We prove the strictness and totality analysis correct with respect to a denotational semantics and finally construct an algorithm for inferring the strictness and totality properties. 1 Introduction Strictness analysis has proved useful in the implementation of lazy functional languages like Miranda, Lazy ML and Haskell: when a function is strict it is safe to evaluate its argument before performing the function call. Totality analysis has not been adopted so widely: if the argument to a function is known to terminate then it is safe to evaluate it before performing the function call [9]. In the literature there are several approaches to the specification of strictness analysis: abstract interpretation (e.g. [10, 3]), projection analysis (e.g. [14]) and inference based methods (e.g. [2, 6, 7, 8, 15]). Totality analysis has received much less attention and has pri...
A Logical Framework for Program Analysis
- Proceedings of the 1992 Glasgow Functional Programming Workshop
, 1992
"... Using logics to express program properties, and deduction systems for proving properties of programs, gives a very elegant way of defining program analysis techniques. This paper addresses a shortcoming of previous work in the area by establishing a more general framework for such logics, as is comm ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Using logics to express program properties, and deduction systems for proving properties of programs, gives a very elegant way of defining program analysis techniques. This paper addresses a shortcoming of previous work in the area by establishing a more general framework for such logics, as is commonly done for progam analysis using abstract interpretation. Moreover, there are natural extensions of this work which deal with polymorphic languages. 1 Introduction Kuo and Mishra gave a `type' deduction system for proving strictness properties of programs, and gave a type inference (sometimes called type reconstruction) algorithm for determining these strictness types [10]. The algorithm was proved correct by showing that the types deduced by it were true in an operational model of the language. They observed that their algorithm was not as powerful as one based on the strictness abstract interpretation of [4], and it appeared to be because their type system lacked intersection types. Bo...
Proving the Correctness of Compiler Optimisations Based on Strictness Analysis
- in Proceedings 5th int. Symp. on Programming Language Implementation and Logic Programming, LNCS 714
, 1993
"... . We show that compiler optimisations based on strictness analysis can be expressed formally in the functional framework using continuations. This formal presentation has two benefits: it allows us to give a rigorous correctness proof of the optimised compiler; and it exposes the various optimisatio ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
. We show that compiler optimisations based on strictness analysis can be expressed formally in the functional framework using continuations. This formal presentation has two benefits: it allows us to give a rigorous correctness proof of the optimised compiler; and it exposes the various optimisations made possible by a strictness analysis. 1 Introduction Realistic compilers for imperative or functional languages include a number of optimisations based on non-trivial global analyses. Proving the correctness of such optimising compilers can be done in three steps: 1. proving the correctness of the original (unoptimised) compiler; 2. proving the correctness of the analysis; and 3. proving the correctness of the modifications of the simple-minded compiler to exploit the results of the analysis. A substantial amount of work has been devoted to steps (1) and (2) but there have been surprisingly few attempts at tackling step (3). In this paper we show how to carry out this third step in the...
Analyse Statique De Programmes : Fondements Et Applications
, 1999
"... domains . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.2 Lattices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.3 Specification of analyses . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.4 Semantic correctness . . . . . . . . . . . . . . . . . . . . . . . . ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
domains . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.2 Lattices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.3 Specification of analyses . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.4 Semantic correctness . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.5 Solving systems of equations . . . . . . . . . . . . . . . . . . . . . 13 1.3 This document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2 Program analysis with conjunctive types 17 2.1 Strictness types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.1 Lindenbaum algebras . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 The strictness logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3 Relationship to abstract interpretation . . . . . . . . . . . . . . . . . . . . 22 2.4 A variation: binding-time analysis . . . . . . . . . . . . . . . . . . . . . . 22 3 Disjunctions and data structures: Properties 25 3.1 Axiomatisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.1 Normal Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2 Abstract domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.1 Base Types, Products, Sums and Functions . . . . . . . . . . . . . 31 3.2.2 Recursive Data Structures . . . . . . . . . . . . . . . . . . . . . . 32 3.2.3 Strictness Properties of Lists . . . . . . . . . . . . . . . . . . . . . 35 4 Disjunctions and data structures: Logic 37 4.1 Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.1 Strictness Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.1.2 Proving properties for lists . . . . . . . . . . . . . . . . . . . . . . 42 4.2 Bibliographical not...
Cps-Translation and the Correctness of Optimising Compilers
, 1992
"... We show that compiler optimisations based on strictness analysis can be expressed formally in the functional framework using continuations. This formal presentation has two benefits: it allows us to give a rigorous correctness proof of the optimised compiler; and it exposes the various optimisations ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We show that compiler optimisations based on strictness analysis can be expressed formally in the functional framework using continuations. This formal presentation has two benefits: it allows us to give a rigorous correctness proof of the optimised compiler; and it exposes the various optimisations made possible by a strictness analysis. These benefits are especially significant in the presence of partially evaluated data structures. 1 Introduction Realistic compilers for imperative or functional languages include a number of optimisations based on non-trivial global analyses. Proving the correctness of such optimising compilers should involve three steps: 1. proving the correctness of the original (unoptimised) compiler; 2. proving the correctness of the analysis; and 3. proving the correctness of the modifications of the simple-minded compiler to exploit the results of the analysis. A substantial amount of work has been devoted to steps (1) and (2) but there has been surprisingly ...

