Theory of recursive functions and effective computability
Theory of recursive functions and effective computability
Denotational semantics and rewrite rules for FP
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Expressiveness of Simple and Second-Order Type Structures
Journal of the ACM (JACM)
On the Development of the Algebra of Functional Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
Inductive methods for proving properties of programs
Communications of the ACM
Computing in Systems Described by Equations
Computing in Systems Described by Equations
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Formal Representations for Recursively Defined Functional Programs
Proceedings of the International Colloquium on Formalization of Programming Concepts
Implementation of an interpreter for abstract equations
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Busy and lazy FP with infinite objects
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Combinatory foundation of functional programming
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
HOPE: An experimental applicative language
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Paper: An FP-based tool for the synthesis of regular array algorithms
Parallel Computing
Hi-index | 0.01 |
This paper treats languages whose operational semantics is given by a set of rewrite rules. For such languages, it is important to be able to determine that there are enough rules to be able to compute the correct meaning of all expressions, but not so many that the system of rules is inconsistent. A formal framework is developed in which to give a precise treatment of these completeness and soundness issues, which are then investigated in the context of an extended version of the functional programming language FP. The rewrite rules of FP are shown to be sound and complete with respect to three different notions of completeness. The latter half of the paper considers rewrite strategies. In order to implement a language based on rewrite rules, it does not suffice to know that there are “enough” rules in the language; a good strategy for determining the order in which to apply them is also needed. But what is “good”? Corresponding to each notion of completeness, there is a notion of a good rewrite strategy. These notions of goodness are examined and characterized, and examples of a number of natural good strategies are given. Although these results are presented in the context of FP, the techniques (some of which are nontrivial extensions of techniques first used in the context of &lgr;-calculus) should apply well beyond the realm of FP rewriting systems.