Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Higher order generalization in program derivation
II and Colloquium on Functional and Logic Programming and Specifications (CFLP) on TAPSOFT '87: Advanced Seminar on Foundations of Innovative Software Development
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
HILOG: a foundation for higher-order logic programming
Journal of Logic Programming
Total correctness by local improvement in the transformation of functional programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
From logic programming to Prolog
From logic programming to Prolog
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Continuation-Based Program Transformation Strategies
Journal of the ACM (JACM)
Transforming Normal Programs by Replacement
META-92 Proceedings of the 3rd International Workshop on Meta-Programming in Logic
PLILP '90 Proceedings of the 2nd International Workshop on Programming Language Implementation and Logic Programming
Transformation Rules for Logic Programs with Goals as Arguments
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Transformation of Left Terminating Programs: the Reordering Problem
LOPSTR '95 Proceedings of the 5th International Workshop on Logic Programming Synthesis and Transformation
Conjunctive Partial Deduction in Practice
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
Hi-index | 0.00 |
We consider a simple extension of logic programming where variables may range over goals and goals may be arguments of predicates. In this language we can write logic programs which use goals as data. We give practical evidence that, by exploiting this capability when transforming programs, we can improve program efficiency. We propose a set of program transformation rules which extend the familiar unfolding and folding rules and allow us to manipulate clauses with goals which occur as arguments of predicates. In order to prove the correctness of these transformation rules, we formally define the operational semantics of our extended logic programming language. This semantics is a simple variant of LD-resolution. When suitable conditions are satisfied this semantics agrees with LD-resolution and, thus, the programs written in our extended language can be run by ordinary Prolog systems. Our transformation rules are shown to preserve the operational semantics and termination.