diff --git a/src/transformations/native_nn_prover.ml b/src/transformations/native_nn_prover.ml
index 857e8c7ce65448bf2a2a6d9856f4b36658a42fde..8b646979ec30b1f29baeedb58d90f983794f2897 100644
--- a/src/transformations/native_nn_prover.ml
+++ b/src/transformations/native_nn_prover.ml
@@ -45,6 +45,40 @@ let tempfile =
       Stdlib.Filename.concat dir (Fmt.str "caisar_%i.onnx" !c)
     | None -> Stdlib.Filename.temp_file "caisar" ".onnx"
 
+let match_nn_app th_model th_nn term =
+  match term.Why3.Term.t_node with
+  | Tapp
+      ( ls_get (* [ ] *),
+        [
+          {
+            t_node =
+              Why3.Term.Tapp
+                ( ls_atat (* @@ *),
+                  [
+                    { t_node = Tapp (ls_nn (* nn *), _); _ };
+                    {
+                      t_node = Tapp (ls (* input vector *), tl (* input vars *));
+                      _;
+                    };
+                  ] );
+            _;
+          };
+          { t_node = Tconst (ConstInt c); _ };
+        ] )
+    when String.equal ls_get.ls_name.id_string (Why3.Ident.op_get "")
+         && (Why3.Term.ls_equal ls_atat th_model.Symbols.Model.atat
+            || Why3.Term.ls_equal ls_atat th_nn.Symbols.NN.atat) -> (
+    match (Language.lookup_nn ls_nn, Language.lookup_vector ls) with
+    | Some ({ nn_nb_inputs; _ } as nn), Some vector_length ->
+      assert (nn_nb_inputs = vector_length && vector_length = List.length tl);
+      let c = Why3.Number.to_small_integer c in
+      Some (nn, tl, c)
+    | _, _ ->
+      Logging.code_error ~src (fun m ->
+        m "Neural network application without fixed NN or arguments: %a"
+          Why3.Pretty.print_term term))
+  | _ -> None
+
 let create_new_nn env input_vars outputs : string =
   let module IR = Nir in
   let th_f64 = Symbols.Float64.create env in
@@ -102,7 +136,6 @@ let create_new_nn env input_vars outputs : string =
     out
   and convert_old_nn_at_old_index old_nn old_index old_nn_args =
     let out = convert_old_nn old_nn old_nn_args in
-    let old_index = Why3.Number.to_small_integer old_index in
     Nir.Node.gather_int out old_index
   and convert_term term =
     match Why3.Term.Hterm.find_opt cache term with
@@ -116,72 +149,50 @@ let create_new_nn env input_vars outputs : string =
     then
       Logging.user_error ?loc:term.t_loc (fun m ->
         m "Cannot convert non Float64 term %a" Why3.Pretty.print_term term);
-    match term.Why3.Term.t_node with
-    | Tconst (Why3.Constant.ConstReal r) ->
-      IR.Node.create
-        (Constant
-           {
-             data = IR.Gentensor.create_1_float (Utils.float_of_real_constant r);
-           })
-    | Tapp (ls, []) -> get_input ls
-    | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.add ->
-      IR.Node.create (Add { input1 = convert_term a; input2 = convert_term b })
-    | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.sub ->
-      IR.Node.create (Sub { input1 = convert_term a; input2 = convert_term b })
-    | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.mul ->
-      IR.Node.create (Mul { input1 = convert_term a; input2 = convert_term b })
-    | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.div -> (
-      match b.t_node with
+    match match_nn_app th_model th_nn term with
+    | Some (old_nn, tl, old_index) ->
+      convert_old_nn_at_old_index old_nn old_index tl
+    | None -> (
+      match term.Why3.Term.t_node with
       | Tconst (Why3.Constant.ConstReal r) ->
-        let f = Utils.float_of_real_constant r in
-        Nir.Node.div_float (convert_term a) f
-      | _ ->
         IR.Node.create
-          (Div { input1 = convert_term a; input2 = convert_term b }))
-    | Tapp (ls, [ a ]) when Why3.Term.ls_equal ls th_f64.neg ->
-      Nir.Node.mul_float (convert_term a) (-1.)
-    | Tapp
-        ( ls_get (* [ ] *),
-          [
-            {
-              t_node =
-                Tapp
-                  ( ls_atat (* @@ *),
-                    [
-                      { t_node = Tapp (ls_nn (* nn *), _); _ };
-                      {
-                        t_node =
-                          Tapp (ls (* input vector *), tl (* input vars *));
-                        _;
-                      };
-                    ] );
-              _;
-            };
-            { t_node = Tconst (ConstInt old_index); _ };
-          ] )
-      when String.equal ls_get.ls_name.id_string (Why3.Ident.op_get "")
-           && (Why3.Term.ls_equal ls_atat th_model.atat
-              || Why3.Term.ls_equal ls_atat th_nn.atat) -> (
-      match (Language.lookup_nn ls_nn, Language.lookup_vector ls) with
-      | Some ({ nn_nb_inputs; _ } as old_nn), Some vector_length ->
-        assert (nn_nb_inputs = vector_length && vector_length = List.length tl);
-        convert_old_nn_at_old_index old_nn old_index tl
-      | _, _ ->
-        Logging.code_error ~src (fun m ->
-          m "Neural network application without fixed NN or arguments: %a"
-            Why3.Pretty.print_term term))
-    | Tconst _
-    | Tapp (_, _)
-    | Tif (_, _, _)
-    | Tlet (_, _)
-    | Tbinop (_, _, _)
-    | Tcase (_, _)
-    | Tnot _ | Ttrue | Tfalse ->
-      Logging.not_implemented_yet (fun m ->
-        m "Why3 term to IR: %a" Why3.Pretty.print_term term)
-    | Tvar _ | Teps _ | Tquant (_, _) ->
-      Logging.not_implemented_yet (fun m ->
-        m "Why3 term to IR (impossible?): %a" Why3.Pretty.print_term term)
+          (Constant
+             {
+               data =
+                 IR.Gentensor.create_1_float (Utils.float_of_real_constant r);
+             })
+      | Tapp (ls, []) -> get_input ls
+      | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.add ->
+        IR.Node.create
+          (Add { input1 = convert_term a; input2 = convert_term b })
+      | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.sub ->
+        IR.Node.create
+          (Sub { input1 = convert_term a; input2 = convert_term b })
+      | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.mul ->
+        IR.Node.create
+          (Mul { input1 = convert_term a; input2 = convert_term b })
+      | Tapp (ls, [ _; a; b ]) when Why3.Term.ls_equal ls th_f64.div -> (
+        match b.t_node with
+        | Tconst (Why3.Constant.ConstReal r) ->
+          let f = Utils.float_of_real_constant r in
+          Nir.Node.div_float (convert_term a) f
+        | _ ->
+          IR.Node.create
+            (Div { input1 = convert_term a; input2 = convert_term b }))
+      | Tapp (ls, [ a ]) when Why3.Term.ls_equal ls th_f64.neg ->
+        Nir.Node.mul_float (convert_term a) (-1.)
+      | Tconst _
+      | Tapp (_, _)
+      | Tif (_, _, _)
+      | Tlet (_, _)
+      | Tbinop (_, _, _)
+      | Tcase (_, _)
+      | Tnot _ | Ttrue | Tfalse ->
+        Logging.not_implemented_yet (fun m ->
+          m "Why3 term to IR: %a" Why3.Pretty.print_term term)
+      | Tvar _ | Teps _ | Tquant (_, _) ->
+        Logging.not_implemented_yet (fun m ->
+          m "Why3 term to IR (impossible?): %a" Why3.Pretty.print_term term))
   in
   (* Start actual term conversion. *)
   let outputs =
@@ -202,57 +213,69 @@ let create_new_nn env input_vars outputs : string =
   filename
 
 let check_if_new_nn_needed env input_vars outputs =
-  let _, indexed_input_vars =
-    Why3.Term.Mls.mapi_fold (fun _ _ i -> (i + 1, i)) input_vars 0
-  in
-  let outputs1 =
-    List.mapi outputs ~f:(fun index (term, _) -> { index; term })
-  in
-  let outputs2 = List.mapi outputs ~f:(fun index (_, ls) -> (index, ls)) in
-  (create_new_nn env indexed_input_vars outputs1, indexed_input_vars, outputs2)
+  let th_model = Symbols.Model.create env in
+  let th_nn = Symbols.NN.create env in
+  let exception New_NN_Needed in
+  try
+    (* outputs must be direct application, inputs must be lsymbols *)
+    let outputs =
+      List.map outputs ~f:(fun (term, ls) ->
+        match match_nn_app th_model th_nn term with
+        | None -> raise New_NN_Needed
+        | Some (nn, tl, c) ->
+          let tl =
+            List.map tl ~f:(function
+              | { t_node = Why3.Term.Tapp (ls, []); _ } -> ls
+              | _ -> raise New_NN_Needed)
+          in
+          (ls, nn, tl, c))
+    in
+    match outputs with
+    | [] -> raise New_NN_Needed
+    | (_, nn, tl, _) :: _ ->
+      (* with the same nn and arguments *)
+      if not
+           (List.for_all outputs ~f:(fun (_, nn', tl', _) ->
+              String.equal nn'.Language.nn_filename nn.Language.nn_filename
+              && List.equal Why3.Term.ls_equal tl tl'))
+      then raise New_NN_Needed;
+      assert (Why3.Term.Sls.equal (Why3.Term.Sls.of_list tl) input_vars);
+      let outputs =
+        List.map outputs ~f:(fun (ls, _, _, index) -> (index, ls))
+      in
+      let compare (a, _) (b, _) = Int.compare a b in
+      let outputs = List.sort outputs ~compare in
+      assert (List.is_sorted_strictly outputs ~compare);
+      let indexed_input_vars =
+        List.mapi tl ~f:(fun i x -> (x, i)) |> Why3.Term.Mls.of_list
+      in
+      (nn.nn_filename, indexed_input_vars, outputs)
+  with New_NN_Needed ->
+    let _, indexed_input_vars =
+      Why3.Term.Mls.mapi_fold (fun _ _ i -> (i + 1, i)) input_vars 0
+    in
+    let outputs1 =
+      List.mapi outputs ~f:(fun index (term, _) -> { index; term })
+    in
+    let outputs2 = List.mapi outputs ~f:(fun index (_, ls) -> (index, ls)) in
+    (create_new_nn env indexed_input_vars outputs1, indexed_input_vars, outputs2)
 
 (* Choose the term pattern for starting the conversion to ONNX. *)
 let has_start_pattern env term =
   let th_model = Symbols.Model.create env in
   let th_nn = Symbols.NN.create env in
   let th_f = Symbols.Float64.create env in
-  match term.Why3.Term.t_node with
-  | Tapp
-      ( ls_get (* [ ] *),
-        [
-          {
-            t_node =
-              Why3.Term.Tapp
-                ( ls_atat (* @@ *),
-                  [
-                    { t_node = Tapp (ls_nn (* nn *), _); _ };
-                    {
-                      t_node = Tapp (ls (* input vector *), tl (* input vars *));
-                      _;
-                    };
-                  ] );
-            _;
-          };
-          { t_node = Tconst (ConstInt _); _ };
-        ] )
-    when String.equal ls_get.ls_name.id_string (Why3.Ident.op_get "")
-         && (Why3.Term.ls_equal ls_atat th_model.Symbols.Model.atat
-            || Why3.Term.ls_equal ls_atat th_nn.Symbols.NN.atat) -> (
-    match (Language.lookup_nn ls_nn, Language.lookup_vector ls) with
-    | Some { nn_nb_inputs; _ }, Some vector_length ->
-      assert (nn_nb_inputs = vector_length && vector_length = List.length tl);
-      true
-    | _, _ ->
-      Logging.code_error ~src (fun m ->
-        m "Neural network application without fixed NN or arguments: %a"
-          Why3.Pretty.print_term term))
-  | Tapp ({ ls_value = Some ty; _ }, []) ->
-    (* input symbol *) Why3.Ty.ty_equal ty th_f.ty
-  | Tapp (ls_app, _) ->
-    List.mem
-      [ th_f.add; th_f.sub; th_f.mul; th_f.div ]
-      ~equal:Why3.Term.ls_equal ls_app
-  | _ -> false
+  match match_nn_app th_model th_nn term with
+  | Some _ -> true
+  | None -> (
+    match term.Why3.Term.t_node with
+    | Tapp ({ ls_value = Some ty; _ }, []) ->
+      (* input symbol *) Why3.Ty.ty_equal ty th_f.ty
+    | Tapp (ls_app, _) ->
+      List.mem
+        [ th_f.add; th_f.sub; th_f.mul; th_f.div ]
+        ~equal:Why3.Term.ls_equal ls_app
+    | _ -> false)
 
 (* Abstract terms that contains neural network applications. *)
 let abstract_nn_term env =
diff --git a/tests/acasxu.t b/tests/acasxu.t
index a80abb726d3ebe8b28c2ee96bf7c3c459f0a9b04..f37dc0c1bd2381c3bc2270fbbd7a0ce63ac46d66 100644
--- a/tests/acasxu.t
+++ b/tests/acasxu.t
@@ -368,7 +368,7 @@ Test verify on acasxu
   55947.6909999999988940544426441192626953125 <= x0
   1145.0 <= x3
   x4 <= 60.0
-  y0 <= y1 and y1 <= y0
+  y1 <= y0 and y0 <= y1
   
   [DEBUG]{InterpretGoal} Interpreted formula for goal 'run2v2'vc':
   forall x:t, x1:t, x2:t, x3:t, x4:t, x5:t, x6:t, x7:t, x8:t, x9:t.
@@ -447,7 +447,7 @@ Test verify on acasxu
   55947.6909999999988940544426441192626953125 <= x5
   1145.0 <= x8
   x9 <= 60.0
-  y0 <= y1 and y1 <= y0
+  y1 <= y0 and y0 <= y1
   
   [DEBUG]{InterpretGoal} Interpreted formula for goal 'run3'vc':
   forall x:t, x1:t, x2:t, x3:t, x4:t, eps:t.
@@ -641,115 +641,18 @@ Test verify on acasxu
      (373.9499200000000200816430151462554931640625:t))
     (7.51888402010059753166615337249822914600372314453125:t))
    (1500.0:t)
-  vector, 5
   nn_nnet,
   (Interpreter_types.Model
      (Interpreter_types.NNet, { Language.nn_nb_inputs = 5; nn_nb_outputs = 5;
                                 nn_ty_elt = t;
                                 nn_filename = "./TestNetwork.nnet";
                                 nn_format = <nir> }))
-  [DEBUG]{ProverSpec} Prover-tailored specification:
-  -0.328421367053318091766556108268559910356998443603515625 <= x0
-  x0 <= 0.67985927880386987087746319957659579813480377197265625
-  -0.499999999999967081887319864108576439321041107177734375 <= x1
-  x1 <= 0.499999999999967081887319864108576439321041107177734375
-  -0.499999999999967081887319864108576439321041107177734375 <= x2
-  x2 <= 0.499999999999967081887319864108576439321041107177734375
-  -0.5 <= x3
-  x3 <= 0.5
-  -0.5 <= x4
-  x4 <= 0.5
-  0.60000151009774149724051994780893437564373016357421875 <= x0
-  0.450000000000000011102230246251565404236316680908203125 <= x3
-  x4 <= -0.450000000000000011102230246251565404236316680908203125
-  y0 <= 3.991125645861615112153231166303157806396484375
-  
-  [DEBUG]{InterpretGoal} Interpreted formula for goal 'P3':
-  forall x:t, x1:t, x2:t, x3:t, x4:t.
-   ((le (0.0:t) (add RNE (mul RNE x (60261.0:t)) (19791.0:t)) /\
-     le (add RNE (mul RNE x (60261.0:t)) (19791.0:t)) (60760.0:t)) /\
-    (le (neg (3.141592653589793115997963468544185161590576171875:t))
-     (add RNE
-      (mul RNE x1 (6.2831853071800001231395071954466402530670166015625:t))
-      (0.0:t)) /\
-     le
-     (add RNE
-      (mul RNE x1 (6.2831853071800001231395071954466402530670166015625:t))
-      (0.0:t))
-     (3.141592653589793115997963468544185161590576171875:t)) /\
-    (le (neg (3.141592653589793115997963468544185161590576171875:t))
-     (add RNE
-      (mul RNE x2 (6.2831853071800001231395071954466402530670166015625:t))
-      (0.0:t)) /\
-     le
-     (add RNE
-      (mul RNE x2 (6.2831853071800001231395071954466402530670166015625:t))
-      (0.0:t))
-     (3.141592653589793115997963468544185161590576171875:t)) /\
-    (le (100.0:t) (add RNE (mul RNE x3 (1100.0:t)) (650.0:t)) /\
-     le (add RNE (mul RNE x3 (1100.0:t)) (650.0:t)) (1200.0:t)) /\
-    le (0.0:t) (add RNE (mul RNE x4 (1200.0:t)) (600.0:t)) /\
-    le (add RNE (mul RNE x4 (1200.0:t)) (600.0:t)) (1200.0:t)) /\
-   ((le (1500.0:t) (add RNE (mul RNE x (60261.0:t)) (19791.0:t)) /\
-     le (add RNE (mul RNE x (60261.0:t)) (19791.0:t)) (1800.0:t)) /\
-    le (neg (0.059999999999999997779553950749686919152736663818359375:t))
-    (add RNE
-     (mul RNE x1 (6.2831853071800001231395071954466402530670166015625:t))
-     (0.0:t)) /\
-    le
-    (add RNE
-     (mul RNE x1 (6.2831853071800001231395071954466402530670166015625:t))
-     (0.0:t))
-    (0.059999999999999997779553950749686919152736663818359375:t)) /\
-   le (3.100000000000000088817841970012523233890533447265625:t)
-   (add RNE
-    (mul RNE x2 (6.2831853071800001231395071954466402530670166015625:t))
-    (0.0:t)) /\
-   le (980.0:t) (add RNE (mul RNE x3 (1100.0:t)) (650.0:t)) /\
-   le (960.0:t) (add RNE (mul RNE x4 (1200.0:t)) (600.0:t)) ->
-   not (((lt (nn_nnet @@ vector x x1 x2 x3 x4)[0]
-          (nn_nnet @@ vector x x1 x2 x3 x4)[1] /\
-          lt (nn_nnet @@ vector x x1 x2 x3 x4)[0]
-          (nn_nnet @@ vector x x1 x2 x3 x4)[2]) /\
-         lt (nn_nnet @@ vector x x1 x2 x3 x4)[0]
-         (nn_nnet @@ vector x x1 x2 x3 x4)[3]) /\
-        lt (nn_nnet @@ vector x x1 x2 x3 x4)[0]
-        (nn_nnet @@ vector x x1 x2 x3 x4)[4])
-  vector, 5
-  nn_nnet,
-  (Interpreter_types.Model
-     (Interpreter_types.NNet, { Language.nn_nb_inputs = 5; nn_nb_outputs = 5;
-                                nn_ty_elt = t;
-                                nn_filename = "./TestNetwork.nnet";
-                                nn_format = <nir> }))
-  [DEBUG]{ProverSpec} Prover-tailored specification:
-  -0.328421367053318091766556108268559910356998443603515625 <= x0
-  x0 <= 0.67985927880386987087746319957659579813480377197265625
-  -0.499999999999967081887319864108576439321041107177734375 <= x1
-  x1 <= 0.499999999999967081887319864108576439321041107177734375
-  -0.499999999999967081887319864108576439321041107177734375 <= x2
-  x2 <= 0.499999999999967081887319864108576439321041107177734375
-  -0.5 <= x3
-  x3 <= 0.5
-  -0.5 <= x4
-  x4 <= 0.5
-  -0.303529646039727207806890874053351581096649169921875 <= x0
-  x0 <= -0.298551301837009008810497334707179106771945953369140625
-  -0.0095492965855130916563719978285007528029382228851318359375 <= x1
-  x1 <= 0.0095492965855130916563719978285007528029382228851318359375
-  0.493380323584843072382000173092819750308990478515625 <= x2
-  0.299999999999999988897769753748434595763683319091796875 <= x3
-  0.299999999999999988897769753748434595763683319091796875 <= x4
-  (((y0 >= y1 or y0 >= y2) or y0 >= y3) or y0 >= y4)
-  
-  Goal runP1'vc: Unknown ()
-  Goal runP1v2'vc: Unknown ()
-  Goal run2'vc: Unknown ()
-  Goal run2v2'vc: Unknown ()
-  Goal run3'vc: Unknown ()
-  Goal robust_output'vc: Unknown ()
-  Goal P1: Unknown ()
-  Goal P3: Unknown ()
+  vector,
+  5
+  [DEBUG]{NN-Gen-Term} new goal:le y10 (1500.0:t)
+  [ERROR]{NN-Gen} No parsed NN './TestNetwork.nnet': Cannot read protobuf
+                  Unrecoverable error: please report the issue at
+                  https://git.frama-c.com/pub/caisar/issues
 
   $ caisar verify --prover PyRAT --prover-altern VNNLIB --ltag=ProverSpec file.mlw
   [DEBUG]{ProverSpec} Prover-tailored specification:
@@ -874,15 +777,15 @@ Test verify on acasxu
   (assert (>= X_3 1145.0))
   (assert (<= X_4 60.0))
   
-  ;; Y_1
-  (declare-const Y_1 Real)
-  
   ;; Y_0
   (declare-const Y_0 Real)
   
+  ;; Y_1
+  (declare-const Y_1 Real)
+  
   ;; Goal run2'vc
-  (assert (or (and (>= Y_0 Y_1))
-              (and (>= Y_1 Y_0))
+  (assert (or (and (>= Y_1 Y_0))
+              (and (>= Y_0 Y_1))
               ))
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
@@ -940,15 +843,15 @@ Test verify on acasxu
   (assert (>= X_8 1145.0))
   (assert (<= X_9 60.0))
   
-  ;; Y_1
-  (declare-const Y_1 Real)
-  
   ;; Y_0
   (declare-const Y_0 Real)
   
+  ;; Y_1
+  (declare-const Y_1 Real)
+  
   ;; Goal run2v2'vc
-  (assert (or (and (>= Y_0 Y_1))
-              (and (>= Y_1 Y_0))
+  (assert (or (and (>= Y_1 Y_0))
+              (and (>= Y_0 Y_1))
               ))
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
@@ -1053,179 +956,9 @@ Test verify on acasxu
               (and (>= Y_0 0.0))
               ))
   
-  [DEBUG]{ProverSpec} Prover-tailored specification:
-  ;;; produced by PyRAT/VNN-LIB driver
-  ;;; produced by VNN-LIB driver
-  ;; X_0
-  (declare-const X_0 Real)
-  
-  ;; X_1
-  (declare-const X_1 Real)
-  
-  ;; X_2
-  (declare-const X_2 Real)
-  
-  ;; X_3
-  (declare-const X_3 Real)
-  
-  ;; X_4
-  (declare-const X_4 Real)
-  
-  ;; H
-  (assert (>= X_0 -0.328421367053318091766556108268559910356998443603515625))
-  
-  ;; H
-  (assert (<= X_0 0.67985927880386987087746319957659579813480377197265625))
-  
-  ;; H
-  (assert (>= X_1 -0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (<= X_1 0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (>= X_2 -0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (<= X_2 0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (>= X_3 -0.5))
-  
-  ;; H
-  (assert (<= X_3 0.5))
-  
-  ;; H
-  (assert (>= X_4 -0.5))
-  
-  ;; H
-  (assert (<= X_4 0.5))
-  
-  ;; H
-  (assert (>= X_0 0.60000151009774149724051994780893437564373016357421875))
-  
-  ;; H
-  (assert (>= X_3 0.450000000000000011102230246251565404236316680908203125))
-  
-  ;; H
-  (assert (<= X_4 -0.450000000000000011102230246251565404236316680908203125))
-  
-  ;; Y_0
-  (declare-const Y_0 Real)
-  
-  ;; Y_1
-  (declare-const Y_1 Real)
-  
-  ;; Y_2
-  (declare-const Y_2 Real)
-  
-  ;; Y_3
-  (declare-const Y_3 Real)
-  
-  ;; Y_4
-  (declare-const Y_4 Real)
-  
-  ;; Goal P1
-  (assert (>= Y_0 3.991125645861615112153231166303157806396484375))
-  
-  [DEBUG]{ProverSpec} Prover-tailored specification:
-  ;;; produced by PyRAT/VNN-LIB driver
-  ;;; produced by VNN-LIB driver
-  ;; X_0
-  (declare-const X_0 Real)
-  
-  ;; X_1
-  (declare-const X_1 Real)
-  
-  ;; X_2
-  (declare-const X_2 Real)
-  
-  ;; X_3
-  (declare-const X_3 Real)
-  
-  ;; X_4
-  (declare-const X_4 Real)
-  
-  ;; H
-  (assert (>= X_0 -0.328421367053318091766556108268559910356998443603515625))
-  
-  ;; H
-  (assert (<= X_0 0.67985927880386987087746319957659579813480377197265625))
-  
-  ;; H
-  (assert (>= X_1 -0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (<= X_1 0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (>= X_2 -0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (<= X_2 0.499999999999967081887319864108576439321041107177734375))
-  
-  ;; H
-  (assert (>= X_3 -0.5))
-  
-  ;; H
-  (assert (<= X_3 0.5))
-  
-  ;; H
-  (assert (>= X_4 -0.5))
-  
-  ;; H
-  (assert (<= X_4 0.5))
-  
-  ;; H
-  (assert (>= X_0 -0.303529646039727207806890874053351581096649169921875))
-  
-  ;; H
-  (assert (<= X_0 -0.298551301837009008810497334707179106771945953369140625))
-  
-  ;; H
-  (assert (>= X_1 -0.0095492965855130916563719978285007528029382228851318359375))
-  
-  ;; H
-  (assert (<= X_1 0.0095492965855130916563719978285007528029382228851318359375))
-  
-  ;; H
-  (assert (>= X_2 0.493380323584843072382000173092819750308990478515625))
-  
-  ;; H
-  (assert (>= X_3 0.299999999999999988897769753748434595763683319091796875))
-  
-  ;; H
-  (assert (>= X_4 0.299999999999999988897769753748434595763683319091796875))
-  
-  ;; Y_0
-  (declare-const Y_0 Real)
-  
-  ;; Y_1
-  (declare-const Y_1 Real)
-  
-  ;; Y_2
-  (declare-const Y_2 Real)
-  
-  ;; Y_3
-  (declare-const Y_3 Real)
-  
-  ;; Y_4
-  (declare-const Y_4 Real)
-  
-  ;; Goal P3
-  (assert (<= Y_0 Y_1))
-  (assert (<= Y_0 Y_2))
-  (assert (<= Y_0 Y_3))
-  (assert (<= Y_0 Y_4))
-  
-  Goal runP1'vc: Unknown ()
-  Goal runP1v2'vc: Unknown ()
-  Goal run2'vc: Unknown ()
-  Goal run2v2'vc: Unknown ()
-  Goal run3'vc: Unknown ()
-  Goal robust_output'vc: Unknown ()
-  Goal P1: Unknown ()
-  Goal P3: Unknown ()
+  [ERROR]{NN-Gen} No parsed NN './TestNetwork.nnet': Cannot read protobuf
+                  Unrecoverable error: please report the issue at
+                  https://git.frama-c.com/pub/caisar/issues
 
   $ caisar verify --prover Marabou --ltag=ProverSpec file.mlw
   [DEBUG]{ProverSpec} Prover-tailored specification:
@@ -1290,7 +1023,7 @@ Test verify on acasxu
   x0 >= 55947.6909999999988940544426441192626953125
   x3 >= 1145.0
   x4 <= 60.0
-  +y0 -y1 >= 0
+  +y1 -y0 >= 0
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
   x0 >= 0.0
@@ -1306,7 +1039,7 @@ Test verify on acasxu
   x0 >= 55947.6909999999988940544426441192626953125
   x3 >= 1145.0
   x4 <= 60.0
-  +y1 -y0 >= 0
+  +y0 -y1 >= 0
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
   x0 >= 0.0
@@ -1325,7 +1058,7 @@ Test verify on acasxu
   x5 >= 55947.6909999999988940544426441192626953125
   x8 >= 1145.0
   x9 <= 60.0
-  +y0 -y1 >= 0
+  +y1 -y0 >= 0
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
   x0 >= 0.0
@@ -1344,7 +1077,7 @@ Test verify on acasxu
   x5 >= 55947.6909999999988940544426441192626953125
   x8 >= 1145.0
   x9 <= 60.0
-  +y1 -y0 >= 0
+  +y0 -y1 >= 0
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
   x0 >= 0.0
@@ -1412,50 +1145,6 @@ Test verify on acasxu
   x5 <= 0.375
   y0 >= 0.0
   
-  [DEBUG]{ProverSpec} Prover-tailored specification:
-  x0 >= -0.328421367053318091766556108268559910356998443603515625
-  x0 <= 0.67985927880386987087746319957659579813480377197265625
-  x1 >= -0.499999999999967081887319864108576439321041107177734375
-  x1 <= 0.499999999999967081887319864108576439321041107177734375
-  x2 >= -0.499999999999967081887319864108576439321041107177734375
-  x2 <= 0.499999999999967081887319864108576439321041107177734375
-  x3 >= -0.5
-  x3 <= 0.5
-  x4 >= -0.5
-  x4 <= 0.5
-  x0 >= 0.60000151009774149724051994780893437564373016357421875
-  x3 >= 0.450000000000000011102230246251565404236316680908203125
-  x4 <= -0.450000000000000011102230246251565404236316680908203125
-  y0 >= 3.991125645861615112153231166303157806396484375
-  
-  [DEBUG]{ProverSpec} Prover-tailored specification:
-  x0 >= -0.328421367053318091766556108268559910356998443603515625
-  x0 <= 0.67985927880386987087746319957659579813480377197265625
-  x1 >= -0.499999999999967081887319864108576439321041107177734375
-  x1 <= 0.499999999999967081887319864108576439321041107177734375
-  x2 >= -0.499999999999967081887319864108576439321041107177734375
-  x2 <= 0.499999999999967081887319864108576439321041107177734375
-  x3 >= -0.5
-  x3 <= 0.5
-  x4 >= -0.5
-  x4 <= 0.5
-  x0 >= -0.303529646039727207806890874053351581096649169921875
-  x0 <= -0.298551301837009008810497334707179106771945953369140625
-  x1 >= -0.0095492965855130916563719978285007528029382228851318359375
-  x1 <= 0.0095492965855130916563719978285007528029382228851318359375
-  x2 >= 0.493380323584843072382000173092819750308990478515625
-  x3 >= 0.299999999999999988897769753748434595763683319091796875
-  x4 >= 0.299999999999999988897769753748434595763683319091796875
-  +y0 -y1 <= 0
-  +y0 -y2 <= 0
-  +y0 -y3 <= 0
-  +y0 -y4 <= 0
-  
-  Goal runP1'vc: Unknown ()
-  Goal runP1v2'vc: Unknown ()
-  Goal run2'vc: Unknown ()
-  Goal run2v2'vc: Unknown ()
-  Goal run3'vc: Unknown ()
-  Goal robust_output'vc: Unknown ()
-  Goal P1: Unknown ()
-  Goal P3: Unknown ()
+  [ERROR]{NN-Gen} No parsed NN './TestNetwork.nnet': Cannot read protobuf
+                  Unrecoverable error: please report the issue at
+                  https://git.frama-c.com/pub/caisar/issues
diff --git a/tests/acasxu_ci.t b/tests/acasxu_ci.t
index b9b6cb3c669275ed2e370bf90f2a2fa7fe903e62..fb37f1d0e568eb018bf0570570125d23e43fbc26 100644
--- a/tests/acasxu_ci.t
+++ b/tests/acasxu_ci.t
@@ -325,7 +325,7 @@ Test verify on acasxu
   55947.6909999999988940544426441192626953125 <= x0
   1145.0 <= x3
   x4 <= 60.0
-  y0 <= y1 and y1 <= y0
+  y1 <= y0 and y0 <= y1
   
   [DEBUG]{InterpretGoal} Interpreted formula for goal 'run3'vc':
   forall x:t, x1:t, x2:t, x3:t, x4:t, eps:t.
@@ -650,15 +650,15 @@ Test verify on acasxu
   (assert (>= X_3 1145.0))
   (assert (<= X_4 60.0))
   
-  ;; Y_1
-  (declare-const Y_1 Real)
-  
   ;; Y_0
   (declare-const Y_0 Real)
   
+  ;; Y_1
+  (declare-const Y_1 Real)
+  
   ;; Goal run2'vc
-  (assert (or (and (>= Y_0 Y_1))
-              (and (>= Y_1 Y_0))
+  (assert (or (and (>= Y_1 Y_0))
+              (and (>= Y_0 Y_1))
               ))
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
@@ -847,7 +847,7 @@ Test verify on acasxu
   x0 >= 55947.6909999999988940544426441192626953125
   x3 >= 1145.0
   x4 <= 60.0
-  +y0 -y1 >= 0
+  +y1 -y0 >= 0
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
   x0 >= 0.0
@@ -863,7 +863,7 @@ Test verify on acasxu
   x0 >= 55947.6909999999988940544426441192626953125
   x3 >= 1145.0
   x4 <= 60.0
-  +y1 -y0 >= 0
+  +y0 -y1 >= 0
   
   [DEBUG]{ProverSpec} Prover-tailored specification:
   x0 >= 0.0