@MISC{Roychoudhury_inductionproofs, author = {Abhik Roychoudhury}, title = {Induction Proofs by Program Transformations Unfold/fold Transformations}, year = {} }

Share

OpenURL

Abstract

Unfold/fold transformations have been studied for various declarative programming languages such as functional languages [5, 12, 21], logic programming [14, 22, 23] and constraint logic programming [1, 8, 13]. Some of the most extensively studied transformation systems for logic programs are the unfold/fold transformation systems. At a high level, unfold and fold transformations for definite logic programs can be viewed as follows. Definite logic programs consist of definitions of the form A: − φ where A is an atom and φ is a positive boolean formula over atoms. Unfolding replaces an occurrence of A in a program with φ while folding replaces an occurrence of φ with A. Folding is called reversible if its effects can be undone by an unfolding, and irreversible otherwise. Most of the existing work on unfold/fold transformations focus on irreversible folding transformations. p(X):-q(X). q(a). q(f(X)):-q(X). p(a). p(f(X)):-q(X). q(a). q(f(X)):-q(X). p(a). p(f(X)):-p(X). q(a). q(f(X)):-q(X).