I am trying to figure out what is bounds propagation in clpfd, but cannot seem to find a good explanation anywhere.
I am revising for Prolog and clpfd and came across this question, but looking at the lecture notes it does not make sense to me. Could someone please explain the actual meaning of bounds propagation and what it is used for.
Here is the question I am referring to:
When the following Prolog program
:- use_module(library(clpfd)).bounds(X, Y, Z) :- X in 1..5, Y in 1..2, Z in 3..5, X #= Y + Z.is queried it gives the answer:?- bounds(X, Y, Z). X in 4..5, Y in 1..2, Z in 3..4.Explain how bounds propagation can be applied to infer this answer.