anchor.diff:        | ["sat"]     -> SAT     (labels, reason_unknown)
         | ["unknown"] -> UNKNOWN (labels, reason_unknown)
         | ["timeout"] -> TIMEOUT (labels, reason_unknown)
  -      | ["killed"]  -> bg_z3_proc.restart(); KILLED
  +      | ["killed"]  -> (!bg_z3_proc).restart(); KILLED
         | _ ->
           failwith (format1 "Unexpected output from Z3: got output result: %s\n"
                             (String.concat "\n" smt_output.smt_result))
  
positive.code:   let status, statistics =
      try doZ3Exe r fresh input label_messages
      with _ when not (Options.trace_error()) ->
           bg_z3_proc.refresh();
           UNKNOWN([], Some "Z3 raised an exception"), BU.smap_create 0
    in
    let _, elapsed_time = BU.time_diff start (BU.now()) in
  
negative.code:    BU.start_process false id ((Options.z3_exe())) (ini_params()) cond
  
  type bgproc = {
      ask: string -> string;
      refresh:unit -> unit;
      restart:unit -> unit
  }
  