// // implication // part 2. // // x=2 -> y in {1,3} // x=2 // import static choco.Choco.*; import choco.cp.model.CPModel; import choco.cp.solver.CPSolver; import choco.kernel.model.Model; import choco.kernel.solver.Solver; import choco.kernel.model.variables.integer.IntegerVariable; import choco.kernel.solver.ContradictionException; import choco.kernel.model.constraints.Constraint; public class Prop5 { public static void main(String[] args) throws ContradictionException { Model m = new CPModel(); // EDIT // m.setDefaultExpressionDecomposition(true); IntegerVariable x = makeIntVar("x",0,4,"cp:enum"); IntegerVariable y = makeIntVar("y",0,4,"cp:enum"); m.addConstraint(implies(eq(x,2),or(eq(y,1),eq(y,3)))); m.addConstraint(eq(x,2)); Solver s = new CPSolver(); s.read(m); s.propagate(); System.out.println(s.getVar(x).pretty()); System.out.println(s.getVar(y).pretty()); // // NOTE: what value does y now have? // } }