From 06b3af488e9d33836fb67d963eedfc6284925210 Mon Sep 17 00:00:00 2001
From: Michele Alberti <michele.alberti@cea.fr>
Date: Thu, 17 Feb 2022 12:30:15 +0100
Subject: [PATCH] [PyRAT] Split all tasks so that conjuctions must appear at
 top-level only.

---
 src/printers/pyrat.ml | 3 ++-
 src/verification.ml   | 6 ++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/printers/pyrat.ml b/src/printers/pyrat.ml
index 2cd238c1..d365b254 100644
--- a/src/printers/pyrat.ml
+++ b/src/printers/pyrat.ml
@@ -31,7 +31,6 @@ let rec print_term info fmt t =
   | Tnot _ | Ttrue | Tfalse | Tvar _ | Tlet _ | Tif _ | Tcase _ | Tquant _
   | Teps _ ->
     Printer.unsupportedTerm t "Not supported by PyRAT"
-  | Tbinop (Tand, _, _) -> assert false (* Should appear only at top-level. *)
   | Tconst c -> Constant.(print number_format unsupported_escape) fmt c
   | Tapp (ls, l) -> (
     match Printer.query_syntax info.info_syn ls.ls_name with
@@ -40,6 +39,8 @@ let rec print_term info fmt t =
       match (Term.Hls.find_opt info.variables ls, l) with
       | Some s, [] -> Fmt.string fmt s
       | _ -> Printer.unsupportedTerm t "Unknown variable(s)"))
+  | Tbinop (Tand, _, _) ->
+    Printer.unsupportedTerm t "Unexpected conjunction not at top-level"
   | Tbinop (Tor, t1, t2) ->
     Fmt.pf fmt "%a or %a" (print_term info) t1 (print_term info) t2
 
diff --git a/src/verification.ml b/src/verification.ml
index 2a9bfbd8..b25aaa1d 100644
--- a/src/verification.ml
+++ b/src/verification.ml
@@ -40,11 +40,9 @@ let combine_prover_answers answers =
 let call_prover ~limit (prover : Why3.Whyconf.config_prover) driver task =
   let open Why3 in
   let task_prepared = Driver.prepare_task driver task in
-  (* We make [tasks] as a list (ie, conjunction) of disjunctions. *)
   let tasks =
-    if String.equal prover.prover.prover_name "Marabou"
-    then Trans.apply Split_goal.split_goal_full task_prepared
-    else [ task_prepared ]
+    (* We make [tasks] as a list (ie, conjunction) of disjunctions. *)
+    Trans.apply Split_goal.split_goal_full task_prepared
   in
   let command = Whyconf.get_complete_command ~with_steps:false prover in
   let nn_file =
-- 
GitLab