Contraint Logic Programming - An Informal Introduction

Constraint Logic Programming (CLP) is a new class of programming languages combining the declarativity of logic programming with the e ciency of constraint solving. New application areas, amongst them many di erent classes of combinatorial search problems such as scheduling, planning or resource allocation can now be solved, which were intractable for logic programming so far. The most important advantage that these languages o er is the short development time while exhibiting an e ciency comparable to imperative languages. This tutorial aims at presenting the principles and concepts underlying these languages and explaining them by examples. The objective of this paper is not to give a technical survey of the current state of art in research on CLP, but rather to give a tutorial introduction and to convey the basic philosophy that is behind the di erent ideas in CLP. It will discuss the currently most successful computation domains and provide an overview on the di erent consistency techniques used in CLP and its implementations. 1 2 1This work is partially funded by the ESPRIT project CHIC,Nr.5291. 2This report will appear in [FHK+92]. iii

[1]  Michel Kuntz,et al.  A Versatile Browser-Editor for NF² Relations , 1992, Future Databases.

[2]  Thomas C. Henderson,et al.  Arc and Path Consistency Revisited , 1986, Artif. Intell..

[3]  Mark Wallace,et al.  Domain Independent Propagation , 1992, FGCS.

[4]  Nicolas Beldiceanu,et al.  Extending CHIP in order to solve complex scheduling and placement problems , 1993, JFPL.

[5]  Christian Doppler,et al.  Constraint Logic Programming - An Overview , 1990 .

[6]  André Véron,et al.  Virtual memory support for OR-parallel logic programming systems , 1991 .

[7]  Akira Aiba,et al.  Constraint Logic Programming System: CAL, GDCC and Their Constraint Solvers , 1992, Fifth Generation Computer Systems.

[8]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[9]  Norbert Eisinger,et al.  Deduction systems based on resolution , 1993 .

[10]  R. Dechter to Constraint Satisfaction , 1991 .

[11]  B. Buchberger,et al.  Grobner Bases : An Algorithmic Method in Polynomial Ideal Theory , 1985 .

[12]  Thomas Filkorn,et al.  Experiences from a Large Industrial Circuit Design Application , 1991, ISLP.

[13]  W. Older,et al.  Extending Prolog with Constraint Arithmetic on Real Intervals , 1990 .

[14]  Helmut Simonis,et al.  Using Logic Programming for Fault Diagnosis in Digital Circuits , 1987, GWAI.

[15]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[16]  Michael J. Maher,et al.  Output in CLP , 1992, FGCS.

[17]  Jean-Marc Andreoli,et al.  Communication as Fair Distribution of Knowledge , 1991, OOPSLA.

[18]  George E. Collins,et al.  Quantifier elimination for real closed fields by cylindrical algebraic decomposition , 1975 .

[19]  Robert M. Haralick,et al.  Increasing Tree Search Efficiency for Constraint Satisfaction Problems , 1979, Artif. Intell..

[20]  Dana S. Scott,et al.  Concurrent constraint programming languages , 1989 .

[21]  Pascal Van Hentenryck,et al.  The Constraint Logic Programming Language CHIP , 1988, FGCS.

[22]  Pascal Van Hentenryck A constraint approach to mastermind in logic programming , 1988, SGAR.

[23]  Steven David Prestwich,et al.  Meta-Programming for Reordering Literals in Deductive Databases , 1992, META.

[24]  Mark Wallace Compiling Integrity Checking into Update Procedures , 1991, IJCAI.

[25]  Gert Smolka Residuation and Guarded Rules for Constraint Logic Programming , 1991, WCLP.

[26]  Ugo Montanari,et al.  Networks of constraints: Fundamental properties and applications to picture processing , 1974, Inf. Sci..

[27]  Roland H. C. Yap,et al.  Constraint Logic Programming and Option Trading , 1987, IEEE Expert.

[28]  Michael J. Maher Logic Semantics for a Class of Committed-Choice Programs , 1987, ICLP.

[29]  Lone Leth Thomsen,et al.  Some Issues in the Semantics of Facile Distributed Programming , 1992, REX Workshop.

[30]  Mireille Ducassé Abstract Views of Prolog Executions in Opium , 1991, ISLP.

[31]  Helmut Simonis,et al.  Test Generation using the Constraint Logic Programming Language CHIP , 1989, International Conference on Logic Programming.

[32]  David Chan,et al.  SEPIA - An Extendible Prolog System , 1989, IFIP Congress.

[33]  André Véron,et al.  A Shared Environment Parallel Logic Programming System on Distributed Memory Architectures , 1991, EDMCC.

[34]  Alan K. Mackworth Constraint Satisfaction , 1985 .

[35]  Pascal Van Hentenryck Constraint logic programming , 1991, The Knowledge Engineering Review.

[36]  Alain Colmerauer,et al.  An introduction to Prolog III , 1989, CACM.

[37]  Michel Kuntz,et al.  The gist of GIUKU: graphical interactive intelligent utilities for knowledgeable users of data base systems , 1992, SGMD.

[38]  Eugene C. Freuder,et al.  The Complexity of Some Polynomial Network Consistency Algorithms for Constraint Satisfaction Problems , 1985, Artif. Intell..

[39]  Pascal Van Hentenryck,et al.  The Cardinality Operator: A New Logical Connective for Constraint Logic Programming , 1990, WCLP.

[40]  Akira Aiba,et al.  CAL: A Theoretical Background of Constraint Logic Programming and its Applications , 1988, J. Symb. Comput..

[41]  Hervé Gallaire,et al.  Logic Programming: Further Developments , 1985, SLP.

[42]  Alan K. Mackworth Consistency in Networks of Relations , 1977, Artif. Intell..

[43]  Robert A. Kowalski,et al.  Logic for problem solving , 1982, The computer science library : Artificial intelligence series.

[44]  Pascal Van Hentenryck,et al.  Solving Large Combinatorial Problems in Logic Programming , 1990, J. Log. Program..

[45]  Jacques Cohen,et al.  Constraint logic programming languages , 1990, CACM.

[46]  Helmut Simonis,et al.  Propositional Calculus Problems in CHIP , 1993, WCLP.

[47]  Roland H. C. Yap,et al.  The CLP( R ) language and system , 1992, TOPL.

[48]  Akira Aiba,et al.  Constraints Logic Programming Language CAL , 1988, FGCS.

[49]  Michel Kuntz,et al.  Introduction to GIUKU: Graphical Interactive Intelligent Utilities for Knowledgeable Users of data base systems , 1993, Inf. Syst..

[50]  Jean-Marc Andreoli,et al.  Interaction abstract machines , 1993 .

[51]  Frederick Knabe,et al.  A Distributed Protocol for Channel-Based Communication with Choice , 1992, PARLE.

[52]  André Véron,et al.  Binding Techniques and Garbage Collection for OR-Parallel CLP Systems , 1992, PLILP.

[53]  Michael Ian Shamos,et al.  Computational geometry: an introduction , 1985 .

[54]  Gabriel M. Kuper,et al.  Constraint query languages (preliminary report) , 1990, PODS '90.

[55]  Pascal Van Hentenryck,et al.  Solving a Cutting-Stock Problem in Constraint Logic Programming , 1988, ICLP/SLP.

[56]  André Véron,et al.  Constraint Handling, Garbage Collection and Execution Model Issues in ElipSys , 1991, ICLP Workshop on Parallel Execution of Logic Programs.

[57]  Kam-Fai Wong,et al.  Supporting thousands of threads using a hybrid stack sharing scheme , 1994, SAC '94.

[58]  Ernest Davis,et al.  Constraint Propagation with Interval Labels , 1987, Artif. Intell..

[59]  Hoon Hong,et al.  Improvements in cad-based quantifier elimination , 1990 .

[60]  Eugene C. Freuder Synthesizing constraint expressions , 1978, CACM.

[61]  Wolfram Büttner,et al.  Embedding Boolean Expressions into Logic Programming , 1987, J. Symb. Comput..

[62]  Guy L. Steele,et al.  The definition and implementation of a computer programming language based on constraints , 1980 .

[63]  Tobias Nipkow,et al.  Boolean Unification - The Story So Far , 1989, J. Symb. Comput..

[64]  David L. Waltz,et al.  Generating Semantic Descriptions From Drawings of Scenes With Shadows , 1972 .

[65]  Eugene L. Lawler,et al.  Traveling Salesman Problem , 2016 .

[66]  Thom W. Frühwirth,et al.  Polymorphically Typed Logic Programs , 1991, ICLP.

[67]  Pascal Van Hentenryck,et al.  An Efficient Arc Consistency Algorithm for a Class of CSP Problems , 1991, IJCAI.

[68]  Nicolas Beldiceanu,et al.  Overview of the CHIP Compiler System , 1993, WCLP.