In the solving process, two main techniques are used:search and constraint propagation. Constraint propagation is a technique for pruning the search space, by trying to detect
inconsistency as soon as possible. With search, a problem is split into sub-problems which are solved recursively. Solving a problem is therefore the traversal of a tree whose nodes correspond to the sub-problems (partial assignments) and where the root of the tree is the initial problem with no assignments.