# Constraint solver

### From Glossary

A constraint solver typically consists of two parts:

- a propagation engine that prunes the variable domains according to the constraint propagator of each constraint.
- a search engine that branches on different values for the variables according to the selected search strategy.

A solution is found as soon as every variable is assigned a value from its domain and all constraints are satisfied.

A constraint solver can typically search for one solution (returning the first solution it finds, if one exists) or for all solutions.