Home  About  Submit Site    
Constraint programming was invented, or discovered, in the early 1960s. A main idea in constraint programming is to tell a computer what you want without specifying an exact procedure and/or process to follow. Constraints are relations that must be satisfied; examples: a line must remain horizontal, a component in an electrical circuit simulation must obey Ohm's Law, one column in a web page table must be at least twice as wide as another. Constraints have been used in many types of languages and systems, especially in user interface toolkits, planning and scheduling, and simulation. It is often easy to write constraints where the answer is hard to compute. Example: In constraint programming, X * X = 2 will find X even if you don't tell a program exactly how to do it. For this, it solves by iteratively changing X and converging on an answer, without knowing how to do the square root algorithm; this was Isaac Newton's method for finding square roots. In programming and mathematics, constraints can be algebraic or logical (Boolean): often an equality or inequality relation, between the values of one or more variables, often between two; example: x > 2 is a constraint on x. Constraint satisfaction is the process of assigning values to variables so all constraints are true. In programming, constraints are relationships that are declared once, and then maintained automatically by a system. Constraints are automatically evaluated when needed, rather than needing programmers to call them when needed. They should have no side effects. Constraints can also serve as a type of inheritance. Constraint programming uses methods from mathematics, artificial intelligence, and operations research. It allows fast development, economic maintenance, and high performance. Directly representing a problem as constraints results in shorter, simpler programs, easier to understand and adapt to changing needs. On this page, languages are arranged in three groups and levels: 1) Top group: types or classes of languages. 2) Middle group: languages for which there are more than one instance of a language of this name/type, a language family. 3) Bottom group: specific languages, individual instances; there is only one language of this name/type.
Sites [ Submit ]
Guide to Constraint Programming - Online tutorial/textbook for beginners to the area of constraint programming. This area is of the set of less known software technologies, but is evolving rapidly and has a growing, significant commercial interest. - Home of Explanation-based Constraint Programming. Definitions, applications, libraries, links. DeltaBlue Constraint Solver - Efficient, incremental local propagation constraint solver. Like most local propagation algorithms, it cannot accommodate cyclic constraints. University of Washington site. DeltaBlue Code Archive - For incremental dataflow constraint solver, implemented in varied languages, each in a subdirectory named after the language: C DEC, C SUN4; Common Lisp, Smalltalk. Book: Programming with Constraints: an Introduction - Description of book, MIT Press, release March 1998: programs from book, slides for courses for use with book. Brandeis Interval Arithmetic Constraint Solver - Java applet that solves non-linear real arithmetic constraints. StarFLIP++ - Free, reusable iterative optimization library for combinatorial problems with fuzzy constraints. GNU LGPL. Omega Project - Frameworks and algorithms for analyzing and transforming scientific programs; 2 major components: the Omega test system to manipulate sets of affine constraints over integer variables; and developing frameworks to analyze and transform programs. Constraints for the Web - Constraints can specify desired layout of web documents, and behavior of embedded applets: 2 system architectures where author and viewer can make layout constraints, needed and optional. Final appearance of page comes from negotiation between author and viewer, via solving all the constraints. A Differential Approach to Graphical Interaction - The ad hoc manner in which direct manipulation interfaces have been designed and implemented restricts the types of interactive controls. This dissertation presents a new approach for a systematic method to implement flexible, combinable interactive controls. Cassowary - Incremental constraint solving toolkit, efficiently solves systems of linear equalities, inequalities. Constraints can be requirements or preferences. Client code specifies constraints to maintain, and the solver updates constrained variables to have values that satisfy the constraints. Garnet Toolkit FAQ - Frequently Asked Questions about Garnet user interface development environment for Common Lisp and X11 or Macintosh developed by User Interface Software Group, Human-Computer Interaction Institute, Carnegie Mellon University. Seventh International Conference on Principles and Practice of Constraint Programming - 2001 November 26 - December 1, Paphos, Cyprus. Constraints Archive - Holds comp.constraints FAQ, pages of constraint-related pointers, source code for various systems, benchmarks, directory of people interested in constraints, constraint bibliographies, collection of online papers, links. Clearly the product of much work. Garnet Project - Generating an Amalgam of Real-time, Novel Editors and Toolkits; developed by User Interface Software Group, Human Computer Interaction Institute, School of Computer Science, Carnegie Mellon University. Free: public domain. Natural Programming - Attempt to make a system that is easier to learn and use than anything available to novice programmers today: HANDS: Human-centered Advances for Novice Development of Software. School of Computer Science, Carnegie Mellon University; NSF funded. Garnet: Brad A. Myers - Personal page of Garnet inventor and lead researcher. Describes Garnet motives, rationale. ThingLabII: Constraint-based user interfaces - Supports exploration of constraint-based user interfaces; consists of a set of classes that define constraints and constrainable objects called things. Incremental constraint satisfier, module compiler, construction-set style user interface, many tools, extensible set of primitive user interface building blocks. ICOT Free Software - Free constraint software developed by Institute for New Generation Computer Technology (ICOT), Japan: Constraint MGTP (CMGTP) model generation theorem prover (MGTP), MGTP-G, KLIC, some cu-Prologs, and documents. FTP site. Gecode - Generic Constraint Development Environment. Constraint solver implemented as C++ library. Main goals: modifiability, extensibility, speed. Features: integer and set variables, large constraint set, copying-based search. [Open Source, BSD] Constraints: An International Journal - Covering all aspects of computing with constraints; on paper or online; fee required. Book: Foundations of Constraint Satisfaction - Description of book, Academic Press, release 1993: programs from book. ILOG CP - Constraint-programming optimization engine, providing cutting-edge optimization technology and an optimization library for workforce scheduling, league scheduling, sequencing, configuration, dispatching and resource-allocation applications with logical constraints. ResearchIndex: Kaleidoscope: A Constraint Imperative Programming Language - The Constraint Imperative Programming CIP family of languages integrates constraints and imperative, object oriented programming. Besides merging useful features of both paradigms, such integration has synergistic effects. Garnet: Multi-Garnet: Integrating Multi-Way Constraints with Garnet - ResearchIndex: Constraints provide a useful mechanism to maintain relations in user interface toolkits. Garnet is a widely used user interface toolkit with high functionality, based on one way, required constraints. Multi-Garnet extends this by adding support for multi-way constraints and hierarchies. MAC and Combined Heuristics: Two Reasons to Forsake FC (and CBJ?) on Hard Problems - ResearchIndex: In the last 20 years, many algorithms and heuristics were developed to find solutions in constraint networks. Their number increased so much that it quickly became vital to compare performance to propose a small number of good methods.
Click [ Submit ] above to Add a New Site, Update a Site, or Remove a Site from this Category.
This directory is made available through a Creative Commons Attribution license from the DMOZ Organization.

© 2022 - Midnight Design Productions, LLC