POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Composing recursive logic programs with clausal join
New Generation Computing - Special Issue: Selected Papers from the Workshop on Partial Evaluation and Mixed
Constraint satisfaction in logic programming
Constraint satisfaction in logic programming
Concurrent constraint programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The semantic foundations of concurrent constraint programming
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Abstract interpretation for concurrent logic languages
Proceedings of the 1990 North American conference on Logic programming
The CLP( R ) language and system
ACM Transactions on Programming Languages and Systems (TOPLAS)
A transformation system for deductive database modules with perfect model semantics
Theoretical Computer Science
CLP( R ) and some electrical engineering problems
Journal of Automated Reasoning
Suspension analyses for concurrent logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Analyzing logic programs with dynamic scheduling
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Detection and optimization of suspension-free logic programs
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
The replacement operation for CLP modules
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Transformations of CLP modules
Theoretical Computer Science
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Journal of the ACM (JACM)
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verification of Logic Programs with Delay Declarations
AMAST '95 Proceedings of the 4th International Conference on Algebraic Methodology and Software Technology
Unfold/Fold Transformations of Concurrent Processes
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Proving Correctness of Constraint Logic Programs with Dynamic Scheduling
SAS '96 Proceedings of the Third International Symposium on Static Analysis
A CLP View of Logic Programming
Proceedings of the Third International Conference on Algebraic and Logic Programming
Partial evaluation of concurrent constraint languages
ACM Computing Surveys (CSUR) - Special issue: electronic supplement to the September 1998 issue
The narrowing-driven approach to functional logic program specialization
New Generation Computing - Partial evaluation and program transformation
A Partial Evaluation Framework for Curry Programs
LPAR '99 Proceedings of the 6th International Conference on Logic Programming and Automated Reasoning
The transformational approach to program development
A 25-year perspective on logic programming
Efficient local unfolding with ancestor stacks*
Theory and Practice of Logic Programming
Non-leftmost unfolding in partial evaluation of logic programs with impure predicates
LOPSTR'05 Proceedings of the 15th international conference on Logic Based Program Synthesis and Transformation
Efficient local unfolding with ancestor stacks for full prolog
LOPSTR'04 Proceedings of the 14th international conference on Logic Based Program Synthesis and Transformation
Hi-index | 0.00 |
In this paper we study unfold/fold transformations for constraint logic programs (CLP) with dynamic scheduling and for concurrent constraint programming (CCP). We define suitable applicability conditions for these transformations which guarantee that the original and the transformed program have the same results of successful derivations and the same deadlock free queries.The possible applications of these results are twofold. On one hand we can use the unfold/fold system to optimize CLP and CCP programs while preserving their intended meaning and in particular without the risk of introducing deadlocks. On the other hand, unfold/fold transformations can be used for proving deadlock freeness of a class of queries in a given program: to this aim it is sufficient to apply our transformations and to specialize the resulting program with respect to the given queries in such a way that the obtained program is trivially deadlock free. As shown by several interesting examples, this yields a methodology for proving deadlock freeness which is simple and powerful at the same time.