Module problem
Traits defining a problem
Check if a combination of values is satisfactory
Check if a new value is satisfactory against reduced combinations incrementally.
Size and solution domain of a problem