CR-Prolog as a Specification Language for Constraint Satisfaction Problems (original) (raw)
The Journal of Logic Programming, 1998
The Constraint Logic Programming (CLP) Scheme was introduced by Jaar and Lassez. The scheme gave a formal framework, based on constraints, for the basic operational, logical and algebraic semantics of an extended class of logic programs. This paper presents for the ®rst time the semantic foundations of CLP in a self-contained and complete package. The main contributions are threefold. First, we extend the original conference paper by presenting de®nitions and basic semantic constructs from ®rst principles, giving new and complete proofs for the main lemmas. Importantly, we clarify which theorems depend on conditions such as solution compactness, satisfaction completeness and independence of constraints. Second, we generalize the original results to allow for incompleteness of the constraint solver. This is important since almost all CLP systems use an incomplete solver. Third, we give conditions on the (possibly incomplete) solver which ensure that the operational semantics is con¯uent, that is, has independence of literal scheduling.
The semantics of constraint logic programs
Journal of Logic Programming, 1998
The Constraint Logic Programming (CLP) Scheme was introduced by Jaar and Lassez. The scheme gave a formal framework, based on constraints, for the basic operational, logical and algebraic semantics of an extended class of logic programs. This paper presents for the ®rst time the semantic foundations of CLP in a self-contained and complete package. The main contributions are threefold. First, we extend the original conference paper by presenting de®nitions and basic semantic constructs from ®rst principles, giving new and complete proofs for the main lemmas. Importantly, we clarify which theorems depend on conditions such as solution compactness, satisfaction completeness and independence of constraints. Second, we generalize the original results to allow for incompleteness of the constraint solver. This is important since almost all CLP systems use an incomplete solver. Third, we give conditions on the (possibly incomplete) solver which ensure that the operational semantics is con¯uent, that is, has independence of literal scheduling. Ó 1998 Elsevier Science Inc. All rights reserved.
Towards constraint-informed information systems
IEEE 7th International Conference on Research Challenges in Information Science (RCIS), 2013
Declarative techniques such as Constraint Programming are very useful in modeling complex requirements. They have the added benefit of being executable specifications and, when properly tuned, high-performance ones. In this paper we argue that Information Systems ought to include constraint-based techniques in their design and implementation. We support this claim by introducing tools based on constraint programming, which we apply to an actual use-case: the academic timetable construction and maintenance problem, as developed at the University of Évora. The system we built was implemented using the GNU Prolog language. Moreover, Constraints have the potential to describe global properties that a model must observe, which makes them a semantically very interesting extension to the capabilities of present model-driven techniques and tools.
Constraint Programming Architectures: Review and a New Proposal
J. Univers. Comput. Sci., 2007
Most automated reasoning tasks with practical applications can be automatically reformulated into a constraint solving task. A constraint programming platform can thus act as a unique, underlying engine to be reused for multiple automated reasoning tasks in intelligent agents and systems. We identify six key requirements for such platform: expressive task modeling language, rapid solving method customization and combination, adaptive solving method, user-friendly solution explanation, efficient execution, and seamless integration within larger systems and practical applications. We then propose a novel, model-driven, component and rule-based architecture for such a platform that better satisfies as a whole this set of requirements than those of currently available platforms.
Constraint Lingo: towards high-level constraint programming
Software: Practice and Experience, 2004
Logic programming requires that the programmer convert a problem into a set of constraints based on predicates. Choosing the predicates and introducing appropriate constraints can be intricate and error-prone. If the problem domain is structured enough, we can let the programmer express the problem in terms of more abstract, higherlevel constraints. A compiler can then convert the higher-level program into a logicprogramming formalism. The compiler writer can experiment with alternative lowlevel representations of the higher-level constraints in order to achieve a high-quality translation. The programmer can then take advantage of both a reduction in complexity and an improvement in runtime speed for all problems within the domain.
CSPCONS: A Communicating Sequential Prolog with Constraints
… and Applications of …, 2002
Cspcons is a programming language that supports program execution over multiple Prolog processes with constraints. The language is an extended version of Csp-ii, a version of Prolog that supports, among other features, channel-based communicating processes and TCP/IP communication and is based on the CSP model introduced by Hoare. Cspcons inherits all the advanced features of Csp-ii and extends it by introducing constraint solving capabilities to the processes. In Cspcons each Prolog process has one or more solvers attached and each solver is independent from the others, following the original Csp-ii model, thus resulting to a communicating sequential constraint logic programming system. Such a model can facilitate greatly the implementation of distributed CLP applications. Currently Cspcons offers a finite domain constraint solver, but the addition of new solvers is supported as they can be integrated in the system in the form of linkable C libraries. This paper briefly describes the original Csp-ii system along with the extensions that resulted to the Cspcons system.
Constraint logic programming: A survey
The Journal of Logic Programming, 1994
Constraint Logic Programming (CLP) is a merger of two declarative p a r adigms: constraint solving and logic programming. Though a relatively new eld, CLP has progressed in several quite di erent directions. In particular, the early fundamental concepts have been adapted to better serve i n di erent areas of applications. In this survey of CLP, a primary goal is to give a systematic description of the major trends in terms of common fundamental concepts. The three main parts cover the theory, implementation issues and programming for applications.