Program transformations are frequently performed by optimizing compilers and the correctness of applying them usually depends on data flow information. For source-to-source transformations it is shown how a denotational setting can be useful for validating such program transformations.Strong equivalence is obtained for transformations that exploit forward data flow information, whereas weak equivalence is obtained for transformations that exploit backward data flow information. To obtain strong equivalence both the original and the transformed program must be data flow analysed, but consideration of a transformation exploiting liveness of variables indicates that a more satisfactory approach may be possible
Dijkstra's weakest pre-condition formalism for proving correctness of programs is modified and exten...
We aim to specify program transformations in a declarative style, and then to generate executable pr...
It is suggested that denotational semantic definitions of programming languages should be based on ...
Program transformations are frequently performed by optimizing compilers, and the correctness of app...
AbstractCommon subexpression elimination (CSE) is a well-known method for code optimization in compi...
A methodology is described for generating provably correct compilers from denotational definitions ...
A laudable trend of the past two decades has been the increased use of denotational semantics to gui...
AbstractA compiler optimization is sound if the optimized program that it produces is semantically e...
Using concepts from denotational semantics, we have produced a very simple compiler that can be used...
Interpreters and compilers are two different ways of implementing programming languages. An interpre...
In this thesis we present and analyse a set of automatic source-to-source program transformations th...
Rewrite rules with side conditions can elegantly express many classical compiler optimizations for i...
Deductive program verification can be used effectively to verify high-level programs, but can be cha...
AbstractWe show how restructuring a denotational definition leads to a more efficient compiling algo...
AbstractThis paper focuses on the problem of program concretization by applying correctness-preservi...
Dijkstra's weakest pre-condition formalism for proving correctness of programs is modified and exten...
We aim to specify program transformations in a declarative style, and then to generate executable pr...
It is suggested that denotational semantic definitions of programming languages should be based on ...
Program transformations are frequently performed by optimizing compilers, and the correctness of app...
AbstractCommon subexpression elimination (CSE) is a well-known method for code optimization in compi...
A methodology is described for generating provably correct compilers from denotational definitions ...
A laudable trend of the past two decades has been the increased use of denotational semantics to gui...
AbstractA compiler optimization is sound if the optimized program that it produces is semantically e...
Using concepts from denotational semantics, we have produced a very simple compiler that can be used...
Interpreters and compilers are two different ways of implementing programming languages. An interpre...
In this thesis we present and analyse a set of automatic source-to-source program transformations th...
Rewrite rules with side conditions can elegantly express many classical compiler optimizations for i...
Deductive program verification can be used effectively to verify high-level programs, but can be cha...
AbstractWe show how restructuring a denotational definition leads to a more efficient compiling algo...
AbstractThis paper focuses on the problem of program concretization by applying correctness-preservi...
Dijkstra's weakest pre-condition formalism for proving correctness of programs is modified and exten...
We aim to specify program transformations in a declarative style, and then to generate executable pr...
It is suggested that denotational semantic definitions of programming languages should be based on ...