diff --git a/src/main.ml b/src/main.ml
index 879086e0214ab43f15df314e46765f8faf7deb8a..fa37719df43a5b33cc9e619694c678e071b3911b 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -97,32 +97,32 @@ let config_cmd =
   in
   ( Term.(
       ret
-        (const (fun cmdname detect _ ->
+        (const (fun detect _ ->
            if not detect
            then `Help (`Pager, Some "config")
            else
              (* TODO: Do not only check for [detect], and enable it by default,
                 as soon as other options are available. *)
              `Ok (exec_cmd cmdname (fun () -> config true ())))
-        $ const cmdname $ detect $ setup_logs)),
+        $ detect $ setup_logs)),
     Term.info cmdname ~sdocs:Manpage.s_common_options ~envs ~exits ~doc ~man )
 
 let verify_cmd =
   let cmdname = "verify" in
   let files =
-    let doc = "Files to verify" in
+    let doc = "Files to verify." in
     Arg.(value & pos_all string [] & info [] ~doc)
   in
   let format =
-    let doc = "File format" in
+    let doc = "File format." in
     Arg.(value & opt (some string) None & info [ "format" ] ~doc)
   in
   let loadpath =
-    let doc = "Additional loadpath" in
+    let doc = "Additional loadpath." in
     Arg.(value & opt_all string [] & info [ "L" ] ~doc)
   in
   let prover =
-    let doc = "Prover to use" in
+    let doc = "Prover to use." in
     Arg.(required & opt (some string) None & info [ "p"; "prover" ] ~doc)
   in
   let doc =
diff --git a/src/printer/pyrat.ml b/src/printer/pyrat.ml
index a852b9cd1cc8366ffbaa1d70c6ab62768a917773..4616545ef796cf5f8f5fd272fe52e7a918a564fe 100644
--- a/src/printer/pyrat.ml
+++ b/src/printer/pyrat.ml
@@ -85,14 +85,12 @@ let rec print_tdecl info fmt task =
     | Use _ | Clone _ -> ()
     | Meta (meta, l) when Theory.meta_equal meta Transformations.meta_input -> (
       match l with
-      | [ MAls ls; MAint i ] ->
-        Why3.Term.Hls.add info.variables ls (Fmt.str "x%i" i)
+      | [ MAls ls; MAint i ] -> Term.Hls.add info.variables ls (Fmt.str "x%i" i)
       | _ -> assert false)
     | Meta (meta, l) when Theory.meta_equal meta Transformations.meta_output
       -> (
       match l with
-      | [ MAls ls; MAint i ] ->
-        Why3.Term.Hls.add info.variables ls (Fmt.str "y%i" i)
+      | [ MAls ls; MAint i ] -> Term.Hls.add info.variables ls (Fmt.str "y%i" i)
       | _ -> assert false)
     | Meta (_, _) -> ()
     | Decl d -> print_decl info fmt d)
@@ -102,7 +100,7 @@ let print_task args ?old:_ fmt task =
   let info =
     {
       info_syn = Discriminate.get_syntax_map task;
-      variables = Why3.Term.Hls.create 10;
+      variables = Term.Hls.create 10;
     }
   in
   Printer.print_prelude fmt args.Printer.prelude;
diff --git a/src/transformations.ml b/src/transformations.ml
index c5ed8174a70f601d811335139b967f241b526ec7..7713bb84f2a9874cc632e79370e8e7ba7d52669a 100644
--- a/src/transformations.ml
+++ b/src/transformations.ml
@@ -21,62 +21,60 @@ let meta_output =
 let meta_nn_filename =
   Why3.Theory.(
     register_meta_excl "caisar_nnet_or_onnx"
-      ~desc:"Indicates the file containing the network" [ MTstring ])
+      ~desc:"Indicates the filename of the network" [ MTstring ])
 
 (* Retrieve the (input) variables appearing, as arguments, after an 'nnet_apply'
    symbol. *)
 let get_input_variables =
-  let rec aux acc (term : Why3.Term.term) =
+  let open Why3 in
+  let rec aux acc (term : Term.term) =
     match term.t_node with
-    | Why3.Term.Tapp (ls, args) -> (
+    | Term.Tapp (ls, args) -> (
       match Language.lookup_loaded_nnets ls with
       | None -> acc
       | Some _ ->
         let add i acc = function
-          | { Why3.Term.t_node = Tapp (vs, []); _ } ->
-            Why3.Term.Mls.add vs i acc
+          | { Term.t_node = Tapp (vs, []); _ } -> Term.Mls.add vs i acc
           | arg ->
             invalid_arg
-              (Fmt.str "No direct variable in application: %a"
-                 Why3.Pretty.print_term arg)
+              (Fmt.str "No direct variable in application: %a" Pretty.print_term
+                 arg)
         in
         List.foldi ~init:acc ~f:add args)
-    | _ -> Why3.Term.t_fold aux acc term
+    | _ -> Term.t_fold aux acc term
   in
-  Why3.Trans.fold_decl
-    (fun decl acc -> Why3.Decl.decl_fold aux acc decl)
-    Why3.Term.Mls.empty
+  Trans.fold_decl (fun decl acc -> Decl.decl_fold aux acc decl) Term.Mls.empty
 
 (* Create logic symbols for output variables and simplify the formula. *)
 (* TODO: [Reduction_engine] is probably an overkill and should be replaced. *)
 let simplify_goal env input_variables =
-  let rec aux meta hls (term : Why3.Term.term) =
+  let open Why3 in
+  let rec aux meta hls (term : Term.term) =
     match term.t_node with
-    | Why3.Term.Tapp (ls, _) -> (
+    | Term.Tapp (ls, _) -> (
       match Language.lookup_loaded_nnets ls with
-      | None -> Why3.Term.t_map (aux meta hls) term
+      | None -> Term.t_map (aux meta hls) term
       | Some nnet ->
         meta := nnet.filename :: !meta;
         let outputs =
           List.init nnet.nb_outputs ~f:(fun i ->
-            let open Why3 in
             let id = Ident.id_fresh "y" in
             let ls = Term.create_fsymbol id [] nnet.ty_data in
-            hls := (Why3.Decl.create_param_decl ls, ls, i) :: !hls;
+            hls := (Decl.create_param_decl ls, ls, i) :: !hls;
             Term.fs_app ls [] nnet.ty_data)
         in
-        Why3.Term.t_tuple outputs)
-    | _ -> Why3.Term.t_map (aux meta hls) term
+        Term.t_tuple outputs)
+    | _ -> Term.t_map (aux meta hls) term
   in
-  Why3.Trans.fold
+  Trans.fold
     (fun task_hd acc ->
       match task_hd.task_decl.td_node with
-      | Use _ | Clone _ | Meta _ -> Why3.Task.add_tdecl acc task_hd.task_decl
+      | Use _ | Clone _ | Meta _ -> Task.add_tdecl acc task_hd.task_decl
       | Decl { d_node = Dparam ls; _ } -> (
-        let task = Why3.Task.add_tdecl acc task_hd.task_decl in
-        match Why3.Term.Mls.find_opt ls input_variables with
+        let task = Task.add_tdecl acc task_hd.task_decl in
+        match Term.Mls.find_opt ls input_variables with
         | None -> task
-        | Some pos -> Why3.Task.add_meta task meta_input [ MAls ls; MAint pos ])
+        | Some pos -> Task.add_meta task meta_input [ MAls ls; MAint pos ])
       | Decl decl ->
         let meta = ref [] in
         let hls = ref [] in
@@ -87,35 +85,34 @@ let simplify_goal env input_variables =
           else
             let known =
               List.fold !hls ~init:task_hd.task_known ~f:(fun acc (d, _, _) ->
-                Why3.Decl.known_add_decl acc d)
+                Decl.known_add_decl acc d)
             in
             let engine =
-              Why3.Reduction_engine.create
+              Reduction_engine.create
                 {
                   compute_defs = false;
                   compute_builtin = true;
-                  compute_def_set = Why3.Term.Sls.empty;
+                  compute_def_set = Term.Sls.empty;
                 }
                 env known
             in
-            Why3.Reduction_engine.normalize ~limit:100 engine
-              Why3.Term.Mvs.empty term
+            Reduction_engine.normalize ~limit:100 engine Term.Mvs.empty term
         in
-        let decl = Why3.Decl.decl_map map decl in
+        let decl = Decl.decl_map map decl in
         let acc =
           List.fold !hls ~init:acc ~f:(fun acc (d, ls, i) ->
-            let task = Why3.Task.add_decl acc d in
-            Why3.Task.add_meta task meta_output [ MAls ls; MAint i ])
+            let task = Task.add_decl acc d in
+            Task.add_meta task meta_output [ MAls ls; MAint i ])
         in
         let acc =
           List.fold !meta ~init:acc ~f:(fun acc s ->
-            Why3.Task.add_meta acc meta_nn_filename [ MAstr s ])
+            Task.add_meta acc meta_nn_filename [ MAstr s ])
         in
-        Why3.Task.add_decl acc decl)
+        Task.add_decl acc decl)
     None
 
 let caisar_native_prover env =
-  Why3.Trans.seq [ Why3.Trans.bind get_input_variables (simplify_goal env) ]
+  Why3.(Trans.seq [ Trans.bind get_input_variables (simplify_goal env) ])
 
 let init () =
   Why3.Trans.register_env_transform
diff --git a/src/transformations.mli b/src/transformations.mli
index 5b8337745cc6beb283c2e3ba120183a3d6c6665d..65b43a800952c63a3333323e6ca3417b8a917d74 100644
--- a/src/transformations.mli
+++ b/src/transformations.mli
@@ -14,4 +14,4 @@ val meta_output : Why3.Theory.meta
 (** Indicate the output position. *)
 
 val meta_nn_filename : Why3.Theory.meta
-(** The filename of the nnet or onnx *)
+(** The filename of the nnet or onnx model. *)
diff --git a/src/verification.ml b/src/verification.ml
index 6778ffc94a57004402f1681d5a6b81b52b78bda0..a8baac2f6028924cd8fa5b2e3810a0ceb607e5e9 100644
--- a/src/verification.ml
+++ b/src/verification.ml
@@ -26,8 +26,8 @@ let call_prover ~limit prover driver task =
   let nn_file =
     match Task.on_meta_excl Transformations.meta_nn_filename task_prepared with
     | Some [ MAstr nn_file ] -> nn_file
-    | Some _ -> assert false
-    | None -> invalid_arg (Fmt.str "No neural network in the goal")
+    | Some _ -> assert false (* By construction of the meta. *)
+    | None -> invalid_arg (Fmt.str "No neural network model found in task")
   in
   let command = Re.replace_string nnet_or_onnx ~by:nn_file command in
   let prover_call =
@@ -45,12 +45,12 @@ let verify format loadpath prover file =
   let timeout = None in
   let steps = match steplimit with Some 0 -> None | _ -> steplimit in
   let limit =
-    let memlimit = Why3.Whyconf.memlimit (Why3.Whyconf.get_main config) in
-    let def = Why3.Call_provers.empty_limit in
+    let memlimit = Whyconf.(memlimit (get_main config)) in
+    let def = Call_provers.empty_limit in
     {
-      Why3.Call_provers.limit_time = Why3.Opt.get_def def.limit_time timeout;
-      Why3.Call_provers.limit_steps = Why3.Opt.get_def def.limit_time steps;
-      Why3.Call_provers.limit_mem = memlimit;
+      Call_provers.limit_time = Opt.get_def def.limit_time timeout;
+      Call_provers.limit_steps = Opt.get_def def.limit_time steps;
+      Call_provers.limit_mem = memlimit;
     }
   in
   let _, mstr_theory =