I think it is just a problem with how the constraint is written with mismatching indexes.
Constraint CDemOp2(i, j)
has a definition DProd(i|i=2, j) = DemOp2(j)
The mismatch is between CDemOp2(i, j) and DProd(i|i=2, j)
When i=1 and j=1, the condition i|i=2 will be false (it will be true only when i = 2), so the constraint definition will essentially be 0 = DemOp2(1), which is the error you are seeing.
What is the logic behind DProd(i|i=2, j) ? Your current constraint essentially models
CDemOp2(j)
with definition DProd(2, j) = DemOp2(j)
My assumption is that you want to limit the constraint domain to only generating constraints where i=2. You can do this by defining the index domain of CDemOp2 as
(i, j)|(i=2)
and the definition then as
DProd(i, j) = DemOp2(j)
Now there are only constraints generated for i=2 and all j.