Unfold/fold program transformations
Algebraic methods in semantics
Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Concurrent programming: principles and practice
Concurrent programming: principles and practice
Unfold/fold transformation of stratified programs
Theoretical Computer Science
Unfolding-definition-folding, in this order, for avoiding unnecessary variables in logic programs
PLILP '91 Selected papers of the symposium on Programming language implementation and logic programming
Transformations of CLP modules
Theoretical Computer Science
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Model checking
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Communication and Concurrency
A Calculus of Communicating Systems
A Calculus of Communicating Systems
Verification of Parameterized Systems Using Logic Program Transformations
TACAS '00 Proceedings of the 6th International Conference on Tools and Algorithms for Construction and Analysis of Systems: Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS 2000
Infinite State Model Checking by Abstract Interpretation and Program Specialisation
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Analysis of Imperative Programs through Analysis of Constraint Logic Programs
SAS '98 Proceedings of the 5th International Symposium on Static Analysis
Perfect Model Checking via Unfold/Fold Transformations
CL '00 Proceedings of the First International Conference on Computational Logic
ACM Computing Surveys (CSUR)
Convex hull abstractions in specialization of CLP programs
LOPSTR'02 Proceedings of the 12th international conference on Logic based program synthesis and transformation
Combining logic programs and monadic second order logics by program transformation
LOPSTR'02 Proceedings of the 12th international conference on Logic based program synthesis and transformation
Transformations of logic programs on infinite lists
Theory and Practice of Logic Programming
Proving properties of constraint logic programs by eliminating existential variables
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
On inductive and coinductive proofs via unfold/fold transformations
LOPSTR'09 Proceedings of the 19th international conference on Logic-Based Program Synthesis and Transformation
Constraint-based correctness proofs for logic program transformations
Formal Aspects of Computing - Celebrating the 60th Birthday of Carroll Morgan
Verifying programs via iterated specialization
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
In this paper we present an overview of the unfold/fold proof method, a method for proving theorems about programs, based on program transformation. As a metalanguage for specifying programs and program properties we adopt constraint logic programming CLP, and we present a set of transformation rules including the familiar unfolding and folding rules which preserve the semantics of CLP programs. Then, we show how program transformation strategies can be used, similarly to theorem proving tactics, for guiding the application of the transformation rules and inferring the properties to be proved. We work out three examples: i the proof of predicate equivalences, applied to the verification of equality between CCS processes, ii the proof of first order formulas via an extension of the quantifier elimination method, and iii the proof of temporal properties of infinite state concurrent systems, by using a transformation strategy that performs program specialization.