From c204e725f6a78ae708591dc502ea3f404d20f156 Mon Sep 17 00:00:00 2001 From: Michele Alberti <michele.alberti@cea.fr> Date: Fri, 27 Oct 2023 16:41:43 +0200 Subject: [PATCH] [marabou] Rework negation of a formula, but use only non-strict inequality symbols. --- config/drivers/marabou.drv | 12 ++++++------ src/printers/marabou.ml | 12 ++++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/config/drivers/marabou.drv b/config/drivers/marabou.drv index dafffbd..1f29308 100644 --- a/config/drivers/marabou.drv +++ b/config/drivers/marabou.drv @@ -117,9 +117,9 @@ theory real.Real meta "invalid trigger" predicate (>) syntax predicate (<=) "%1 <= %2" - syntax predicate (<) "%1 < %2" + syntax predicate (<) "%1 <= %2" syntax predicate (>=) "%1 >= %2" - syntax predicate (>) "%1 > %2" + syntax predicate (>) "%1 >= %2" remove prop MulComm.Comm remove prop MulAssoc.Assoc @@ -167,9 +167,9 @@ theory ieee_float.Float64 syntax function (.-_) "(-%1)" syntax predicate le "%1 <= %2" - syntax predicate lt "%1 < %2" + syntax predicate lt "%1 <= %2" syntax predicate ge "%1 >= %2" - syntax predicate gt "%1 > %2" + syntax predicate gt "%1 >= %2" end theory real.RealInfix @@ -185,9 +185,9 @@ theory real.RealInfix meta "invalid trigger" predicate (>.) syntax predicate (<=.) "(%1 <= %2)" - syntax predicate (<.) "(%1 < %2)" + syntax predicate (<.) "(%1 <= %2)" syntax predicate (>=.) "(%1 >= %2)" - syntax predicate (>.) "(%1 > %2)" + syntax predicate (>.) "(%1 >= %2)" end theory Bool diff --git a/src/printers/marabou.ml b/src/printers/marabou.ml index 5b888e2..fe887fb 100644 --- a/src/printers/marabou.ml +++ b/src/printers/marabou.ml @@ -128,20 +128,24 @@ let rec negate_term info t = (* Negate float relational symbols. *) let ls_neg = if Term.ls_equal ls info.ls_rel_float.le - || Term.ls_equal ls info.ls_rel_float.lt + then info.ls_rel_float.gt + else if Term.ls_equal ls info.ls_rel_float.lt then info.ls_rel_float.ge else if Term.ls_equal ls info.ls_rel_float.ge - || Term.ls_equal ls info.ls_rel_float.gt + then info.ls_rel_float.lt + else if Term.ls_equal ls info.ls_rel_float.gt then info.ls_rel_float.le else ls in (* Negate real relational symbols. *) let ls_neg = if Term.ls_equal ls info.ls_rel_real.le - || Term.ls_equal ls info.ls_rel_real.lt + then info.ls_rel_real.gt + else if Term.ls_equal ls info.ls_rel_real.lt then info.ls_rel_real.ge else if Term.ls_equal ls info.ls_rel_real.ge - || Term.ls_equal ls info.ls_rel_real.gt + then info.ls_rel_real.lt + else if Term.ls_equal ls info.ls_rel_real.gt then info.ls_rel_real.le else ls_neg in -- GitLab