Journal of Symbolic Computation
Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Specification and transformation of programs: a formal approach to software development
Specification and transformation of programs: a formal approach to software development
Recursive applicative program schemes
Handbook of theoretical computer science (vol. B)
Handbook of theoretical computer science (vol. B)
Unfold/fold transformation of stratified programs
Theoretical Computer Science
A practical algorithm for exact array dependence analysis
Communications of the ACM
Strong termination of logic programs
Journal of Logic Programming
Reasoning about termination of pure Prolog programs
Information and Computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Total correctness by local improvement in the transformation of functional programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
From SOS rules to proof principles: an operational metatheory for functional languages
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Transforming inductive definitions
Proceedings of the 1999 international conference on Logic programming
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Unfold/Fold Transformations For Definite Clause Programs
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
A Transformation System for Definite Programs Based on Termination Analysis
LOPSTR '94/META '94 Proceedings of the 4th International Workshops on Logic Programming Synthesis and Transformation - Meta-Programming in Logic
An unfold/fold transformation framework for definite logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
We address the problem of proving the total correctness of transformations of definite logic programs. We consider a general transformation rule, called clause replacement, which consists in transforming a program P into a new program Q by replacing a set Γ 1 of clauses occurring in P by a new set Γ 2 of clauses, provided that Γ 1 and Γ 2 are equivalent in the least Herbrand model M(P) of the program P.We propose a general method for proving that transformations based on clause replacement are totally correct, that is, M(P)=M(Q). Our method consists in showing that the transformation of P into Q can be performed by: (i) adding extra arguments to predicates, thereby deriving from the given program P an annotated program $\overline{P}$ , (ii) applying a variant of the clause replacement rule and transforming the annotated program $\overline{P}$ into a terminating annotated program $\overline{Q}$ , and (iii) erasing the annotations from $\overline{Q}$ , thereby getting Q.Our method does not require that either P or Q are terminating and it is parametric with respect to the annotations. By providing different annotations we can easily prove the total correctness of program transformations based on various versions of the popular unfolding, folding, and goal replacement rules, which can all be viewed as particular cases of our clause replacement rule.