# Constraing Logic Programming
This skeleton notebook pre-loads SWI-Prolog's libraries for _constraint logic programming_. The libraries are:
- library(dif) provides sound term inequality. [Documentation](http://www.swi-prolog.org/pldoc/doc_for?object=dif/2)
- library(clpfd) reasons about variables with a _finite domain_
(a set of integers). [Documentation](http://www.swi-prolog.org/pldoc/man?section=clpfd)
- library(clpb) reasons about boolean variables (0 and 1).
[Documentation](http://www.swi-prolog.org/pldoc/man?section=clpb)
- library(chr) provides a _committed-choice rule-based language_ designed for writing
constraint solvers and is particularly useful for providing application-specific constraints.
It has been used in many kinds of applications, like scheduling, model checking, abduction,
and type checking, among many others. [Documentation](http://www.swi-prolog.org/pldoc/man?section=chr)
- library(when) provides lower-level _coroutining_
facilities. [Documentation](http://www.swi-prolog.org/pldoc/doc_for?object=when/2)
:- use_module(library(dif)). % Sound inequality
:- use_module(library(clpfd)). % Finite domain constraints
:- use_module(library(clpb)). % Boolean constraints
:- use_module(library(chr)). % Constraint Handling Rules
:- use_module(library(when)). % Coroutining
%:- use_module(library(clpq)). % Constraints over rational numbers