CLP(FD) constraints (Finite Domains) implement arithmetic over integers. They are available in all serious Prolog implementations.
There are two major use cases of CLP(FD) constraints:
Declarative integer arithmetic
Solving combinatorial problems such as planning, scheduling and allocation task...
Prolog itself can be considered as CLP(H): Constraint Logic Programming over Herbrand terms. With this perspective, a Prolog program posts constraints over terms. For example:
?- X = f(Y), Y = a.
X = f(a),
Y = a.