No abstract available.
Searching for semantics
We consider the task of generating operational semantics, defined as axiomatizations of relations such as e → v, from an equality theory, given as a set of equations {e1 = e2}. We generate these semantics by constructing derived rules based on equations ...
Partial evaluation of general parsers
Applications of partial evaluation have so far mainly focused on generation of compilers from interpreters for programming languages. We partially evaluate a simple general LR(k) parsing algorithm. To obtain good results, we rewrite the algorithm using ...
Constructor specialization
In the section on “challenging problems” in the proceedings from the first international workshop on partial evaluation and mixed computation [BEJ88] a question is stated: “Can PE be used to generate new specialized data types, in a way analogous to ...
Towards efficient partial evaluation
In general, a partial evaluator needs to keep track of the tasks that have already been completed or initiated, so that it can recognize when to stop unfolding. In the MIX-style polyvariant specialization algorithm, this is accomplished by a global log. ...
Binding-time analysis and the taming of C pointers
The aim of binding-time analysis is to determine when variables, expressions, statements, etc. in a program can be evaluated by classifying these into static (compile-time) and dynamic (run-time). Explicit separation of binding times has turned out to ...
Extracting polyvariant binding time analysis from polyvariant specializer
Polyvariant binding time analysis allows a program to be transformed for improving propagation and usage of static information. It could be a useful instrument for better specializability. We show that the process of such a transformation is of the same ...
Polyvariant binding-time analysis for applicative languages
Binding-time analysis is a crucial component of an offline partial evaluator. The accuracy of the binding-time information that it produces determines the degree of specialization of programs.
We present a binding-time analysis for applicative ...
Higher-order binding-time analysis
The partial evaluation process requires a binding-time analysis. Binding-time analysis seeks to determine which parts of a program's result is determined when some part of the input is known. Domain projections provide a very general way to encode a ...
Tutorial on specialisation of logic programs
In this tutorial the specialisation of declarative logic programs is presented. The main correctness results are given, and the outline of a basic algorithm for partial evaluation of a logic program with respect to a goal. The practical considerations ...
Groundness analysis for Prolog: implementation and evaluation of domain prop
The domain Prop [22,8] is a conceptually simple and elegant abstract domain to compute groundness information for Prolog programs. In particular, abstract substitutions are represented by Boolean functions built using the logical connectives ⇔, ∨, ∧. ...
Online partial deduction of logic programs
Partial deduction systems must be guided by an unfolding strategy, telling them which atoms to unfold and when to stop unfolding. Online strategies exploit knowledge accumulated during the unfolding itself, for example in a goal stack, while offline ...
Towards an automated tupling strategy
The tupling transformation strategy can be used to merge loops together by combining recursive calls and also to eliminate redundant calls for a class of programs. The clever (and difficult) step of this transformation strategy is to find an appropriate ...
Proofs by structural induction using partial evaluation
In this paper we show how partial evaluation can be used in developing proofs about program transformations. Partial evaluation is particularly appropriate for this task because it distinguishes between static and dynamic data. As a realistic example of ...
The correctness of an optimized code generation
For a functional programming language with a lazy standard semantics, we define a strictness analysis by means of abstract interpretation. Using the information from the strictness analysis we are able to define a code generation which avoids delaying ...
Completeness and predicate-based abstract interpretation
Traditionally, the theory of abstract interpretation has concentrated on the study of when one interpretation is sound (also safe or correct) with respect to another. We consider the dual notion of when one interpretation is complete with respect to ...
Polymorphic strictness analysis using frontiers
This paper shows how to implement sensible polymorphic strictness analysis using the Frontiers algorithm. A central notion is to only ever analyse each function once, at its simplest polymorphic instance. Subsequent non-base uses of functions are dealt ...
Improving abstract interpretations by combining domains
In this paper we consider static analyses based on abstract interpretation of logic programs over combined domains. It is known that analyses over combined domains potentially provide more information than obtainable by performing the independent ...
A partial evaluator for data flow graphs
It has been shown that control flow decisions often reduce the amount of fine-grain, or instruction-level parallelism in many computations. There exists various architectural solutions to this problem, such as branch prediction and speculative execution...
Index Terms
Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation




