A Folding Algorithm for Eliminating Existential Variables from Constraint Logic Programs

The existential variables of a clause in a constraint logic program are the variables which occur in the body of the clause and not in its head. The elimination of these variables is a transformation technique which is often used for improving program efficiency and verifying program properties. We consider a folding transformation rule which ensures the elimination of existential variables and we propose an algorithm for applying this rule in the case where the constraints are linear inequations over rational or real numbers. The algorithm combines techniques for matching terms modulo equational theories and techniques for solving systems of linear inequations. We show that an implementation of our folding algorithm performs well in practice.

[1]  Alberto Pettorossi,et al.  Transformation Rules for Locally Stratified Constraint Logic Programs , 2004, Program Development in Computational Logic.

[2]  Mark E. Stickel,et al.  A Unification Algorithm for Associative-Commutative Functions , 1981, JACM.

[3]  Terese Term rewriting systems , 2003, Cambridge tracts in theoretical computer science.

[4]  Paliath Narendran,et al.  Unification Theory , 2001, Handbook of Automated Reasoning.

[5]  Hans-Jürgen Bürckert Some Relationships between Unification, restricted Unification, and Matching , 1986, CADE.

[6]  Sandro Etalle,et al.  Transformations of CLP Modules , 1996, Theor. Comput. Sci..

[7]  Maurice Bruynooghe,et al.  Program Development in Computational Logic: A Decade of Research Advances in Logic-based Program Development , 2004 .

[8]  Alan Robinson,et al.  Handbook of automated reasoning , 2001 .

[9]  Valerio Senni,et al.  Transformation techniques for constraint logic programs with applications to protocol verification , 2008 .

[10]  中川 裕志,et al.  UNFOLD/FOLD TRANSFORMATION OF STRATIFIED PROGRAMS , 1989 .

[11]  Jacques D. Fleuriot,et al.  IsaPlanner: A Prototype Proof Planner in Isabelle , 2003, CADE.

[12]  Jörg H. Siekmann,et al.  8th International Conference on Automated Deduction , 1986, Lecture Notes in Computer Science.

[13]  Krzysztof R. Apt,et al.  Logic Programming , 1990, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[14]  Alberto Pettorossi,et al.  Unfolding - Definition - Folding, in this Order, for Avaoiding Unnecessary Variables in Logic Programs , 1995, Theor. Comput. Sci..

[15]  Wim Vanhoof,et al.  Binding-time analysis for Mercury , 2004 .

[16]  David K. Smith Theory of Linear and Integer Programming , 1987 .

[17]  Michael J. Maher A Transformation System for Deductive Database Modules with Perfect Model Semantics , 1989, FSTTCS.

[18]  Hisao Tamaki,et al.  Unfold/Fold Transformation of Logic Programs , 1984, ICLP.

[19]  Franz Baader,et al.  Unification theory , 1986, Decis. Support Syst..

[20]  Michael J. Maher,et al.  Constraint Logic Programming: A Survey , 1994, J. Log. Program..

[21]  Paliath Narendran,et al.  Complexity of Matching Problems , 1987, J. Symb. Comput..

[22]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

[23]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[24]  Irène Guessarian,et al.  Transforming Constraint Logic Programs , 1994, Theor. Comput. Sci..

[25]  Alberto Pettorossi,et al.  Proving Properties of Constraint Logic Programs by Eliminating Existential Variables , 2006, ICLP.

[26]  Volker Weispfenning,et al.  The Complexity of Linear Problems in Fields , 1988, Journal of symbolic computation.

[27]  Christophe Ringeissen Matching in a Class of Combined Non-disjoint Theories , 2003, CADE.

[28]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[29]  Alberto Pettorossi,et al.  Istituto Di Analisi Dei Sistemi Ed Informatica " Antonio Ruberti " Consiglio Nazionale Delle Ricerche a Folding Rule for Eliminating Existential Variables from Constraint Logic Programs , 2022 .