Journal of Symbolic Computation
Specification and transformation of programs: a formal approach to software development
Specification and transformation of programs: a formal approach to software development
Handbook of theoretical computer science (vol. B)
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
An unfold/fold transformation framework for definite logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic correctness proofs for logic program transformations
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Distillation with labelled transition systems
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
We address the problem of proving total correctness of transformation rules for 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 clause replacement is 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 constructing from the given program P an annotated program α(P), (ii) applying clause replacements and transforming the annotated program α(P) into a terminating annotated program β(Q, and (iii) erasing the annotations from β(Q), thereby getting Q.Our method does not require that either P or Q terminates and it is parametric w.r.t. the annotations. By providing different definitions for these annotations, we can easily prove the total correctness of many versions of the unfolding, folding, and goal replacement rules proposed in the literature.