Results 1  10
of
48
ParameterPassing and the Lambda Calculus
, 1991
"... The choice of a parameterpassing technique is an important decision in the design of a highlevel programming language. To clarify some of the semantic aspects of the decision, we develop, analyze, and compare modifications of the calculus for the most common parameterpassing techniques, i.e., ca ..."
Abstract

Cited by 207 (23 self)
 Add to MetaCart
The choice of a parameterpassing technique is an important decision in the design of a highlevel programming language. To clarify some of the semantic aspects of the decision, we develop, analyze, and compare modifications of the calculus for the most common parameterpassing techniques, i.e., callbyvalue and callbyname combined with passbyworth and passby reference, respectively. More specifically, for each parameterpassing technique we provide 1. a program rewriting semantics for a language with sideeffects and firstclass procedures based on the respective parameterpassing technique; 2. an equational theory that is derived from the rewriting semantics in a uniform manner; 3. a formal analysis of the correspondence between the calculus and the semantics; and 4. a strong normalization theorem for the imperative fragment of the theory (when applicable). A comparison of the various systems reveals that Algol's callbyname indeed satisfies the wellknown fi rule of the orig...
Rules and Strategies for Transforming Functional and Logic Programs
 ACM Computing Surveys
, 1996
"... We present an overview of the program transformation methodology, focusing our attention on the socalled `rules + strategies' approach in the case of functional and logic programs. The paper is intended to offer an introduction to the subject. The various techniques we present are illustrated ..."
Abstract

Cited by 82 (5 self)
 Add to MetaCart
We present an overview of the program transformation methodology, focusing our attention on the socalled `rules + strategies' approach in the case of functional and logic programs. The paper is intended to offer an introduction to the subject. The various techniques we present are illustrated via simple examples. A preliminary version of this report has been published in: Moller, B., Partsch, H., and Schuman, S. (eds.): Formal Program Development. Lecture Notes in Computer Science 755, Springer Verlag (1993) 263304. Also published in: ACM Computing Surveys, Vol 28, No. 2, June 1996. 3 1 Introduction The program transformation approach to the development of programs has first been advocated by [BurstallDarlington 77], although the basic ideas were already presented in previous papers by the same authors [Darlington 72, BurstallDarlington 75]. In that approach the task of writing a correct and efficient program is realized in two phases: the first phase consists in writing an in...
Higher Order Attribute Grammars
, 1991
"... Higher Order Attribute Grammars (HAGs) are an extension of normal attribute grammars in the sense that the distinction between the domain of parsetrees and the domain of attributes has disappeared: parse trees may be computed in attributes and grafted to the parse tree at various places. As a re ..."
Abstract

Cited by 76 (8 self)
 Add to MetaCart
Higher Order Attribute Grammars (HAGs) are an extension of normal attribute grammars in the sense that the distinction between the domain of parsetrees and the domain of attributes has disappeared: parse trees may be computed in attributes and grafted to the parse tree at various places. As a result semantic functions may be described by attribute evaluation.
Translating HigherOrder Clauses to FirstOrder Clauses
"... Abstract. Interactive provers typically use higherorder logic, while automatic provers typically use firstorder logic. In order to integrate interactive provers with automatic ones, it is necessary to translate higherorder formulae to firstorder form. The translation should ideally be both sound ..."
Abstract

Cited by 45 (4 self)
 Add to MetaCart
(Show Context)
Abstract. Interactive provers typically use higherorder logic, while automatic provers typically use firstorder logic. In order to integrate interactive provers with automatic ones, it is necessary to translate higherorder formulae to firstorder form. The translation should ideally be both sound and practical. We have investigated several methods of translating function applications, types and λabstractions. Omitting some type information improves the success rate, but can be unsound, so the interactive prover must verify the proofs. This paper presents experimental data that compares the translations in respect of their success rates for three automatic provers. 1.
Extending Sledgehammer with SMT Solvers
"... Abstract. Sledgehammer is a component of Isabelle/HOL that employs firstorder automatic theorem provers (ATPs) to discharge goals arising in interactive proofs. It heuristically selects relevant facts and, if an ATP is successful, produces a snippet that replays the proof in Isabelle. We extended Sl ..."
Abstract

Cited by 44 (10 self)
 Add to MetaCart
Abstract. Sledgehammer is a component of Isabelle/HOL that employs firstorder automatic theorem provers (ATPs) to discharge goals arising in interactive proofs. It heuristically selects relevant facts and, if an ATP is successful, produces a snippet that replays the proof in Isabelle. We extended Sledgehammer to invoke satisfiability modulo theories (SMT) solvers as well, exploiting its relevance filter and parallel architecture. Isabelle users are now pleasantly surprised by SMT proofs for problems beyond the ATPs ’ reach. Remarkably, the best SMT solver performs better than the best ATP on most of our benchmarks. 1
Abstract machines for programming language implementation
 FUTURE GENERATION COMPUTER SYSTEMS
, 2000
"... We present an extensive, annotated bibliography of the abstract machines designed for each of the main programming paradigms (imperative, object oriented, functional, logic and concurrent). We conclude that whilst a large number of efficient abstract machines have been designed for particular langua ..."
Abstract

Cited by 20 (0 self)
 Add to MetaCart
We present an extensive, annotated bibliography of the abstract machines designed for each of the main programming paradigms (imperative, object oriented, functional, logic and concurrent). We conclude that whilst a large number of efficient abstract machines have been designed for particular language implementations, relatively little work has been done to design abstract machines in a systematic fashion.
Optimality and Inefficiency : What Isn't a Cost Model of the Lambda Calculus?
 In Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming
, 1996
"... We investigate the computational efficiency of the sharing graphs of Lamping [Lam90], Gonthier, Abadi, and L'evy [GAL92], and Asperti [Asp94], designed to effect socalled optimal evaluation, with the goal of reconciling optimality, efficiency, and the clarification of reasonable cost models f ..."
Abstract

Cited by 19 (2 self)
 Add to MetaCart
(Show Context)
We investigate the computational efficiency of the sharing graphs of Lamping [Lam90], Gonthier, Abadi, and L'evy [GAL92], and Asperti [Asp94], designed to effect socalled optimal evaluation, with the goal of reconciling optimality, efficiency, and the clarification of reasonable cost models for the calculus. Do these graphs suggest reasonable cost models for the calculus? If they are optimal, are they efficient? We present a brief survey of these optimal evaluators, identifying their common characteristics, as well as their shared failures. We give a lower bound on the efficiency of sharing graphs by identifying a class of terms that are normalizable in \Theta(n) time, and require \Theta(n) "fan interactions, " but require\Omega\Gammaq n ) bookkeeping steps. For [GAL92], we analyze this anomaly in terms of the dynamic maintenance of deBruijn indices for intermediate terms. We give another lower bound showing that sharing graphs can do \Omega\Gammao n ) work (via fan interactio...
Higher Order Deforestation
, 1995
"... Intermediate data structures are widely used in functional programs. Programs which use these intermediate structures are usually a lot easier to understand, but they result in loss of efficiency at runtime. In order to reduce these runtime costs, a transformation algorithm called deforestation w ..."
Abstract

Cited by 17 (2 self)
 Add to MetaCart
Intermediate data structures are widely used in functional programs. Programs which use these intermediate structures are usually a lot easier to understand, but they result in loss of efficiency at runtime. In order to reduce these runtime costs, a transformation algorithm called deforestation was proposed by Wadler which could eliminate intermediate structures. However, this transformation algorithm was formulated only for first order functional programs. In this paper, it is shown how the original deforestation algorithm can be extended to deal with higher order functional programs. This extended algorithm is guaranteed to terminate only for expressions in which all functions are in a treeless form. It is shown how all function definitions can be generalised to this form so that the algorithm can be made to terminate for all programs. It is therefore argued that this algorithm is suitable for inclusion in an optimising compiler. i Contents 1 Introduction 1 2 Language 1 3 High...
Three implementation models for Scheme
, 1987
"... This dissertation presents three implementation models for the Scheme Programming Language. The first is a heapbased model used in some form in most Scheme implementations to date; the second is a new stackbased model that is considerably more efficient than the heapbased model at executing most ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
This dissertation presents three implementation models for the Scheme Programming Language. The first is a heapbased model used in some form in most Scheme implementations to date; the second is a new stackbased model that is considerably more efficient than the heapbased model at executing most programs; and the third is a new stringbased model intended for use in a multipleprocessor implementation of Scheme. The heapbased model allocates several important data structures in a heap, including actual parameter lists, binding environments, and call frames. The stackbased model allocates these same structures on a stack whenever possible. This results in Jess heap allocation, fewer memory references, shorter instruction sequences, less garbage collection, and more efficient use of memory. The stringbased model allocates versions of these structures right in the program text, which is represented as a string of symbols. In the stringbased model, Scheme programs are translated into an FFP language designed specifically to support Scheme. Programs in this language are directly executed by the