I would like to clarify that I am absolutely not an expert when it comes to constraint programming (I happen to use it when it seems to be the right tool for the right job).
It is my understanding that the possibility to use global constraints can have a tremendous impact on how efficiently a problem can be solved.
However, not all global constraint are implemented in all constraint programming solvers. For example if I use the global constraint catalog to search existing global constraints, I will find out that the AllDifferent constraint (which represents the fact that no two variables of a given subset of the variables of the problem should take the same value) is implemented, under different names, in quite some constraint programming solvers. On the other hand only two solvers are referenced as implementing the increasing constraint is referenced as only being implemented by three solvers.
Here comes my question:
When using constraint programming, do you first write the model, trying to use global constraints when possible, and later on select which constraint programming solver you are going to use based on the availability of those global constraint? Or do you have a set constraint programming solver that you always use, no matter which global constraint you actually need (implementing the needed global constraint yourself if needed)?