Unify constraints
When constraint variables are unified, then their associated constraints also have to be unified. This is the job of co_merge/2. The list of individual constraints must be combined into a new constraint, which can then be again associated with the constraint variable with co_add/2. If the individual constraints cause a contradiction, then the predicate shall fail.
Before co_merge/2 is invoked, the associated constraint variable is turned into a normal variable. Only after the following invokation of co_add/2 and of course upon backtracking it becomes a constraint variable again.