Logical programming or constraint programming is a programming paradigm in which a set of attributes that a solution should have are specified rather than set of steps to obtain such a solution. A widely used logical programming language is Prolog. Another, more commercial language is Mercury.
Schematically, the process is facts + rules = results. For a different approach, see Inductive logic programming.
The monkey and banana problem is a famous problem studied in the community of logical programming. Instead of the programmer explicitly specifying the path for the monkey to reach the banana, the computer actually reasons out a possible way that the monkey reaches the banana.
Temporal concurrent constraint programming (TCC) and non-deterministic temporal concurrent constraint programming (NTCC) are variants of constraint programming that can deal with time.
Constrained programming often target certain domains. The most popular are:
- boolean ___domain, where true/false constraints apply.
- linear ___domain, where only linear functions are described and analyzed. (A few approaches to unlinear problems do exist.)
- finite ___domain where constraints are defined over countable sets.
- Mixed ___domain involving some of the above mentioned domains.