Results 1 
6 of
6
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 nontrivial 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 ...
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 nontrivial 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 simpleminded 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...
Towards Machinechecked Compiler Correctness for Higherorder Pure Functional Languages
 CSL '94, European Association for Computer Science Logic, Springer LNCS
, 1994
"... . In this paper we show that the critical part of a correctness proof for implementations of higherorder functional languages is amenable to machineassisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
. In this paper we show that the critical part of a correctness proof for implementations of higherorder functional languages is amenable to machineassisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. The proof has been constructed with the help of a generic theorem prover  Isabelle. The major part of the problem lies in establishing the existence of predicates which describe the congruence. This has been solved using Milne's inclusive predicate strategy [5]. The most important intermediate results and the main theorem as derived by Isabelle are quoted in the paper. Keywords: Compiler Correctness, Theorem Prover, Congruence Proof, Denotational Semantics, Lambda Calculus 1 Introduction Much of the work done previously in compiler correctness concerns restricted subsets of imperative languages. Some studies involve machinechecked correctnesse.g. Cohn [1], [2]. A lot of research h...
Within ARM's Reach: Compilation of LeftLinear Rewrite Systems via Minimal Rewrite Systems
, 1997
"... A new compilation technique for leftlinear term rewriting systems is presented, where rewrite rules are transformed into socalled minimal rewrite rules. These minimal rules have such a simple form that they can be viewed as instructions for an abstract rewriting machine (ARM). ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
A new compilation technique for leftlinear term rewriting systems is presented, where rewrite rules are transformed into socalled minimal rewrite rules. These minimal rules have such a simple form that they can be viewed as instructions for an abstract rewriting machine (ARM).
CpsTranslation 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 nontrivial 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 simpleminded 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 ...
The Odin Genetic Programing System
, 1995
"... A new paradigm for Genetic Programming (GP) is proposed. In the new paradigm the genetic representation is separated from the tree structure of the program with a layer of abstraction, and it is argued that this will allow more efficient evolution of large programs. A GP system which can evolve Turi ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
A new paradigm for Genetic Programming (GP) is proposed. In the new paradigm the genetic representation is separated from the tree structure of the program with a layer of abstraction, and it is argued that this will allow more efficient evolution of large programs. A GP system which can evolve Turingcomplete programs has been developed and is presented. Emphasis is placed on the evolution of realtime functional programs which handle input and output using lazy streams. The design of the language in which the evolving programs are expressed is influenced by some properties of the natural genetic mechanism including orderindependence of genes, inversion, a dominantrecessive mechanism and the presence of introns. Contents Preface 3 1 Evolutionary Algorithms  What Are They? 5 1.1 Genetic Algorithms : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5 1.2 Genetic Programming : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 2 A Survey of Evolution 8 2.1 The Pr...