From 7d91344eab48a9441dc68e5545dc15e71ee34b74 Mon Sep 17 00:00:00 2001 From: cprudhom Date: Fri, 6 Sep 2024 10:24:06 +0200 Subject: [PATCH] Fix error with isEq/isGeq due to bool type not caught --- .../chocosolver/solver/variables/IViewFactory.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/solver/src/main/java/org/chocosolver/solver/variables/IViewFactory.java b/solver/src/main/java/org/chocosolver/solver/variables/IViewFactory.java index 5e42ab9cd4..46a5ca9a01 100644 --- a/solver/src/main/java/org/chocosolver/solver/variables/IViewFactory.java +++ b/solver/src/main/java/org/chocosolver/solver/variables/IViewFactory.java @@ -224,6 +224,14 @@ default BoolVar isEq(IntVar var, int v) { } else if (!var.contains(v)) { return ref().boolVar(false); } else { + if (VariableUtils.isBool(var)) { + BoolVar bvar = (BoolVar) var; + if (v == 0) { + return bvar.not(); + } else { + return bvar; + } + } if (ref().getSettings().enableViews()) { int p = checkDeclaredView(var, v, BoolEqView.class, ref().getSettings().checkDeclaredViews()); if (p >= 0) { @@ -252,6 +260,11 @@ default BoolVar isGeq(IntVar var, int v) { } else if (var.getUB() < v) { return ref().boolVar(false); } else { + if (VariableUtils.isBool(var)) { + BoolVar bvar = (BoolVar) var; + assert v == 1; + return bvar; + } if (ref().getSettings().enableViews()) { int p = checkDeclaredView(var, v - 1, BoolLeqView.class, ref().getSettings().checkDeclaredViews()); if (p >= 0) {