Constraints in Procedural and Concurrent Languages

This chapter addresses the integration of constraints and s earch into programming languages from three different points of views. It first focuses on the use of constraints to model combinatorial optimization problem and to easily implement search procedures, then it considers the use of constraints for supporting conc urrent computations and finally turns to the use of constraints to enable open implementations of constraints solvers. The idea of approaching hard combinatorial optimization problems through a combination of search and constraint solving appeared first in log ic programming. The genesis and growth of constraint programming within logic programming is not surprising as it catered to two fundamental needs: a declarative style and non-determinism. Despite the continued support of logic programming for constraint programmers, research efforts were initiated to import constraint technol ogies into other paradigms (in particular procedural and object-oriented paradigms) to cate r to a broader audience and leverage constraint-based techniques in novel areas. The first mo tivation behind a transition is a desire to ease the adoption of a successful technology. Moving constraints to a platform and paradigm widely accepted would facilitate their adoption within existing software systems by reducing resistance to the introduction of technologies and tools perceived as radically different. A second motivation is that constraints are vers atile abstractions equally well suited for modeling and supporting concurrency. In particular, concurrent computation can be seen as agents that communicate and coordinate through a shared constraint store. Third, constraint-based techniques can leverage the semantics of a target application domain to design specialized constraints or search procedures that are more effective than off-the-shelves constraints. The ability, for domain spec ialists, to easily create, customize and extend both constraints solvers and search is therefore a necessity for adaptability. The continued success and growth of constraints depends on the availability of flexible, extensible, versatile and easy to use solvers. It is conting ent on retaining performance that

[1]  Tom Schrijvers,et al.  Analyses, Optimizations and Extensions of Constraint Handling Rules: Ph.D. Summary , 2005, ICLP.

[2]  Christian Schulte,et al.  Parallel Search Made Simple , 2000 .

[3]  Martin Henz Objects for concurrent constraint programming , 1997 .

[4]  Daniel Le Métayer,et al.  A parallel machine for multiset transformation and its programming style , 1988, Future Gener. Comput. Syst..

[5]  G. Smolka A Foundation for Higher-order Concurrent Constraint Programming , 1994 .

[6]  Armin Wolf,et al.  Adaptive Constraint Handling with CHR in Java , 2001, CP.

[7]  Seif Haridi,et al.  Programming Paradigms of the Andorra Kernel Language , 1991, ISLP.

[8]  Gul Agha,et al.  Research directions in concurrent object-oriented programming , 1993 .

[9]  Stefania Costantini,et al.  A Logic Programming Language for Multi-agent Systems , 2002, JELIA.

[10]  M. Nivat Fiftieth volume of theoretical computer science , 1988 .

[11]  Peter Van Roy,et al.  Efficient logic variables for distributed computing , 1999, TOPL.

[12]  Slim Abdennadher,et al.  Model Generation with Existentially Quantified Variables and Constraints , 1997, ALP/HOA.

[13]  Pascal Van Hentenryck,et al.  Search and strategies in OPL , 2000, TOCL.

[14]  Thom W. Frühwirth Complete Propagation Rules for Lexicographic Order Constraints over Arbitrary Domains , 2005, CSCLP.

[15]  Slim Abdennadher,et al.  Operational Semantics and Confluence of Constraint Propagation Rules , 1997, CP.

[16]  Patrick Brézillon,et al.  Lecture Notes in Artificial Intelligence , 1999 .

[17]  Christophe Rigotti,et al.  Automatic generation of CHR constraint solvers , 2004, Theory and Practice of Logic Programming.

[18]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[19]  Pascal Van Hentenryck,et al.  Numerica: A Modeling Language for Global Optimization , 1997, IJCAI.

[20]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[21]  Jan van Leeuwen,et al.  Computer Science Today , 1995, Lecture Notes in Computer Science.

[22]  Akira Aiba,et al.  A Study on Boolean Constraint Solvers , 1991, WCLP.

[23]  Philippe Codognet,et al.  A Minimal Extension of the WAM for clp(FD) , 1993, ICLP.

[24]  Peter Van Roy,et al.  Mobile objects in distributed Oz , 1997, TOPL.

[25]  Thom W. Frühwirth,et al.  Theory and Practice of Constraint Handling Rules , 1998, J. Log. Program..

[26]  Francesca Rossi,et al.  New Trends in Constraints , 2001, Lecture Notes in Computer Science.

[27]  Johan Montelius,et al.  Exploiting fine-grain parallelism in concurrent constraint languages , 1997, Uppsala theses in computing science.

[28]  Slim Abdennadher,et al.  Chr _ : a Flexible Query Language , 2022 .

[29]  François Laburthe,et al.  SALSA: A Language for Search Algorithms , 1998, CP.

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

[31]  Frédéric Benhamou,et al.  Applying Interval Arithmetic to Real, Integer, and Boolean Constraints , 1997, J. Log. Program..

[32]  Roger Mohr,et al.  Good Old Discrete Relaxation , 1988, ECAI.

[33]  Ehud Shapiro,et al.  The family of concurrent logic programming languages , 1989, CSUR.

[34]  Konstantinos Sagonas,et al.  Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming , 2003 .

[35]  Pedro Barahona,et al.  PSICO: Solving Protein Structures with Constraint Programming and Optimization , 2002, Constraints.

[36]  Christian Schulte Oz Explorer: A Visual Constraint Programming Tool , 1996, PLILP.

[37]  William Leler,et al.  Constraint programming languages: their specification and generation , 1988 .

[38]  Philippe Codognet,et al.  Compiling Constraints in clp(FD) , 1996, J. Log. Program..

[39]  Kazunori Ueda,et al.  Guarded Horn Clauses , 1986, LP.

[40]  William S. Havens,et al.  A language for optimizing constraint propagation , 1993 .

[41]  Peter Van Roy,et al.  Concepts, Techniques, and Models of Computer Programming , 2004 .

[42]  Slim Abdennadher,et al.  Confluence and Semantics of Constraint Simplification Rules , 2004, Constraints.

[43]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[44]  Andreas Podelski,et al.  Constraint Programming: Basics and Trends , 1995, Lecture Notes in Computer Science.

[45]  Jean-francois Puget,et al.  A C++ implementation of CLP , 1997 .

[46]  Slim Abdennadher,et al.  On Completion of Constraint Handling Rules , 1998, CP.

[47]  Peter Van Roy,et al.  Logic programming in the context of multiparadigm programming: the Oz experience , 2002, Theory and Practice of Logic Programming.

[48]  Christian Schulte,et al.  Programming Constraint Inference Engines , 1997, CP.

[49]  Pascal Van Hentenryck,et al.  Newton - Constraint Programming over Nonlinear Constraints , 1998, Sci. Comput. Program..

[50]  Ehud Shapiro,et al.  Third International Conference on Logic Programming , 1986 .

[51]  Frédéric Benhamou,et al.  Interval Constraint Logic Programming , 1994, Constraint Programming.

[52]  Gert Smolka,et al.  Object-Oriented Concurrent Constraint Programming in Oz , 1993, KI.

[53]  Harald Ganzinger,et al.  A New Meta-complexity Theorem for Bottom-Up Logic Programs , 2001, IJCAR.

[54]  Peter J. Stuckey,et al.  Abstract interpretation for constraint handling rules , 2005, PPDP '05.

[55]  Vijay Saraswat,et al.  Logic Programming, Proceedings of the 1991 International Symposium, San Diego, California, USA, Oct. 28 - Nov 1, 1991 , 1991, ILPS.

[56]  Gert Smolka,et al.  The Oz Programming Model , 1996, Computer Science Today.

[57]  François Laburthe,et al.  CLAIRE: combining sets, search and rules to better express algorithms , 1999, Theory and Practice of Logic Programming.

[58]  Martin Henz,et al.  Figaro: Yet Another Constraint Programming Library , 1999, Electron. Notes Theor. Comput. Sci..

[59]  Hélène Kirchner,et al.  ELAN: A logical framework based on computational systems , 1996, WRLA.

[60]  Simon L. Peyton Jones,et al.  Sound and Decidable Type Inference for Functional Dependencies , 2004, ESOP.

[61]  Pascal Van Hentenryck The OPL optimization programming language , 1999 .

[62]  Matthew L. Ginsberg,et al.  Limited Discrepancy Search , 1995, IJCAI.

[63]  Tobias Nipkow,et al.  Term rewriting and all that , 1998 .

[64]  Thom W. Frühwirth,et al.  Proving Termination of Constraint Solver Programs , 1999, New Trends in Constraints.

[65]  Michel Leconte,et al.  Beyond the Glass Box: Constraints as Objects , 1995, ILPS.

[66]  Slim Abdennadher,et al.  Essentials of Constraint Programming , 2010, Cognitive Technologies.

[67]  Gert Smolka,et al.  Oz - A Programming Language for Multi-Agent Systems , 1993, IJCAI.

[68]  Pascal Van Hentenryck Constraint and Integer Programming in OPL , 2002, INFORMS J. Comput..

[69]  Peter J. Stuckey,et al.  The Refined Operational Semantics of Constraint Handling Rules , 2004, ICLP.

[70]  Thom W. Frühwirth Parallelizing Union-Find in Constraint Handling Rules Using Confluence Analysis , 2005, ICLP.

[71]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..

[72]  Pascal Van Hentenryck,et al.  A Modeling Layer for Constraint-Programming Libraries , 2005, INFORMS J. Comput..

[73]  Y. Colombani,et al.  Mosel: An Overview , 2007 .

[74]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[75]  Thom W. Frühwirth,et al.  Constraint Handling Rules , 2009, Constraint Programming.

[76]  Christian Prins,et al.  Applications of optimisation with Xpress-MP , 2002 .

[77]  Alain Colmerauer,et al.  Constraint logic programming: selected research , 1993 .

[78]  Jean-Louis Imbert Linear Constraint Solving in CLP-Languages , 1994, Constraint Programming.

[79]  Pascal Van Hentenryck,et al.  A constraint-based architecture for local search , 2002, OOPSLA '02.

[80]  Peter J. Stuckey,et al.  Programming with Constraints: An Introduction , 1998 .

[81]  Peter J. Stuckey,et al.  Automatic Implication Checking for CHR Constraints , 2006, Electron. Notes Theor. Comput. Sci..

[82]  Vijay A. Saraswat,et al.  Concurrent constraint programming , 1989, POPL '90.

[83]  Pascal Van Hentenryck,et al.  A Generic Arc-Consistency Algorithm and its Specializations , 1992, Artif. Intell..

[84]  Prakash Panangaden,et al.  The semantic foundations of concurrent constraint programming , 1991, POPL '91.

[85]  Slim Abdennadher,et al.  JACK: A Java Constraint Kit , 1999, Electron. Notes Theor. Comput. Sci..

[86]  K. Fuchi,et al.  Concurrent Prolog , 1988 .

[87]  Maurizio Gabbrielli,et al.  A compositional semantics for CHR , 2005, PPDP '05.

[88]  Thom W. Frühwirth,et al.  A Linear-Logic Semantics for Constraint Handling Rules , 2005, CP.

[89]  Pascal Van Hentenryck,et al.  Nondeterministic Control for Hybrid Search , 2006, Constraints.

[90]  Pedro Meseguer Interleaved Depth-First Search , 1997, IJCAI.

[91]  Jean-Yves Girard,et al.  Linear logic: its syntax and semantics , 1995 .

[92]  Laurent Perron Search Procedures and Parallelism in Constraint Programming , 1999, CP.

[93]  Enrico Pontelli Parallelism and implementation technology for (constraint) logic programming , 1998, SIGP.

[94]  Christian Schulte,et al.  Programming Deep Concurrent Constraint Combinators , 2000, PADL.

[95]  José Meseguer,et al.  Conditioned Rewriting Logic as a United Model of Concurrency , 1992, Theor. Comput. Sci..

[96]  Slim Abdennadher,et al.  Integration and Optimization of Rule-Based Constraint Solvers , 2003, LOPSTR.

[97]  Nancy Martin,et al.  Programming Expert Systems in OPS5 - An Introduction to Rule-Based Programming(1) , 1985, Int. CMG Conference.

[98]  Yves Caseau,et al.  A Deductive and Object-Oriented Approach to a Complex Scheduling Problem , 1993, DOOD.

[99]  Peter J. Stuckey,et al.  Extending arbitrary solvers with constraint handling rules , 2003, PPDP '03.

[100]  Lee Naish Logic Programming, Proceedings of the Fourteenth International Conference on Logic Programming, Leuven, Belgium, July 8-11, 1997 , 1997, ICLP.

[101]  Christian Schulte,et al.  Programming Constraint Services , 2002, Lecture Notes in Computer Science.

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

[103]  Brian W. Kernighan,et al.  AMPL: A Modeling Language for Mathematical Programming , 1993 .

[104]  Slim Abdennadher,et al.  University course timetabling using constraint handling rules , 2000, Appl. Artif. Intell..

[105]  Seif Haridi,et al.  Structural operational semantics for AKL , 1992, Future Gener. Comput. Syst..