Logical programmingLogical 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.