*M*, i.e.: a conjunction of constraints with an objective function.

*M*is said to be unfeasible by CP. Suppose now I add to the model some equality constraints on some variables, stating that they should be equal to an a-priori known solution of M. Let's call this model

*M' = M /\ c1 /\ c2 /\ ... /\ cn*, where

*c1...cn*are equality constraints of the form "

*x1 == 4*", or "

*x3 == 7*" coming from a known solution to

*M*, with

*x1*and

*x3*being variables. When CP solves

*M'*, it finds a solution which of course has the values I forced via

*c1...cn*(in this case,

*x1 = 4*and

*x3 = 7*).

I just fail to see how can M not have any solution, while

*M'*has one: first order logic says

*M /\ c1...cn => M*, so if

*M'*has a solution,

*M*should also have at least one (possibly more since

*c1...cn*could cut off some other solutions, and in this case being equality constraints for sure they do).

This same behavior happens if I remove the objective function from M, switching from a Constraint Optimization problem to a Constraint Satisfaction Problem. Let's call

*M''*the model derived from M by removing the objective function. Again, CP tells that

*M''*is feasible. It's pretty obvious to me that if

*M''*is feasible (having a solution

*x''*), then

*M*should be as well, having a solution

*x*with objective value better or equal than

*x''*.

How can this be?

Regards,

Stefano