Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
On semantics of nondeterministic recursive program schemes
Algebraic methods in semantics
Computational semantics of term rewriting systems
Algebraic methods in semantics
Unfold/fold program transformations
Algebraic methods in semantics
Referential transparency, definiteness and unfoldability
Acta Informatica
Preservation of stronger equivalence in unfold/fold logic program transformation
Theoretical Computer Science - Special issue on the international conference on fifth generation computer systems. Tokyo, 1988
Recursive applicative program schemes
Handbook of theoretical computer science (vol. B)
Semantics preserving transformation rules for Prolog
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Research topics in functional programming
Unfold/fold transformation of stratified programs
Theoretical Computer Science
Handbook of logic in computer science (vol. 2)
Combinatory reduction systems: introduction and survey
Theoretical Computer Science - A collection of contributions in honour of Corrado Bo¨hm on the occasion of his 70th birthday
Transfinite reductions in orthogonal term rewriting systems
Information and Computation
Properties of a first-order functional language with sharing
Theoretical Computer Science
Total correctness by local improvement in the transformation of functional programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Self-applicable partial evaluation for the pi-calculus
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Partial-evaluation techniques for concurrent programs
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Specialization of lazy functional logic programs
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Computing in unpredictable environments: semantics, reduction strategies, and program transformation
Theoretical Computer Science - Special issue: trees in algebra and programming
A non-deterministic call-by-need lambda calculus
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Initial Algebra Semantics and Continuous Algebras
Journal of the ACM (JACM)
Operational and Semantic Equivalence Between Recursive Programs
Journal of the ACM (JACM)
Transforming inductive definitions
Proceedings of the 1999 international conference on Logic programming
Transformations of CCP programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Narrowing-Driven Partial Evaluation of Functional Logic Programs
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Partial Evaluation Scheme for Concurrent Languages and Its Correctness
Euro-Par '96 Proceedings of the Second International Euro-Par Conference on Parallel Processing - Volume I
Transformation of Left Terminating Programs
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Replacement Can Preserve Termination
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
Preserving Universal Termination through Unfold/Fold
ALP '94 Proceedings of the 4th International Conference on Algebraic and Logic Programming
The Replacement Operation for CCP Programs
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
The call-by-need lambda calculus
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
Hi-index | 0.00 |
We prove some new results about the correctness of transformations of nondeterministic programs. The reported work formalises the intuitive idea that two recursive programs ought to be equivalent, also in a nondeterministic setting, if they can be symbolically unfolded, through deterministic reductions, to the same, possibly infinite, term. In order to do this we develop two related semantics, based on computations modeled by reduction sequences, and argue that they are operationally meaningful. We then specialise to the case of Combinatory Reduction Systems, which provides a suitable rewrite setting for higher order functional programs with nondeterministic constructs, e.g., stream or process primitives. In this setting we prove a theorem about equivalence of programs based on possibly infinite, deterministic unfoldings of programs converging to the same term. We then use the theorem to show a correctness criterion for unfold/fold-transformations of nondeterministic recursive programs. This criterion is similar to the well-known Tamaki-Sato correctness criterion for unfold/fold-transformations of logic programs.