anchor.diff:       x) in
     let stdout =
       if fresh then
  -      BU.launch_process (tid()) ((Options.z3_exe())) (ini_params()) input cond
  +      BU.launch_process (tid()) ((z3_exe())) (ini_params()) input cond
       else
         let proc = bg_z3_proc.grab() in
         let stdout = BU.ask_process proc input in
  
positive.code:     (let x = BU.trim_string s = "Done!" in
  //     BU.print5 "On thread %s, Z3 %s (%s) says: %s\n\t%s\n" (tid()) id pid s (if x then "finished" else "waiting for more output");
       x) in
     BU.start_process id ((Options.z3_exe())) (ini_params()) cond
  
  type bgproc = {
      grab:unit -> proc;
  
negative.code: type z3version =
  | Z3V_Unknown of string
  | Z3V of int * int * int
  
  let z3_exe =
    let z3_exe = ref None in
    fun () ->
      match !z3_exe with
      | None ->
          let mixed = FStar.Common.try_convert_file_name_to_mixed (Options.z3_exe ()) in
          z3_exe := Some mixed;
          mixed
      | Some z3_exe ->
          z3_exe
  
  let z3version_as_string = function
      | Z3V_Unknown s -> BU.format1 "unknown version: %s" s
  