anchor.diff:  let rewrite (h:binder) : tac<unit> = wrap_err "rewrite" <|
       bind (cur_goal ()) (fun goal ->
       let bv, _ = h in
  -    mlog (fun _ -> BU.print2 "+++Rewrite %s : %s\n" (Print.bv_to_string bv) (tts (goal_env goal) bv.sort)) (fun _ ->
  +    mlog (fun _ -> BU.print2 "+++Rewrite %s : %s\n" (Print.bv_to_string bv) (Print.term_to_string bv.sort)) (fun _ ->
       match split_env bv (goal_env goal) with
       | None -> fail "binder not found in environment"
       | Some (e0, bvs) -> begin
  
positive.code: 
  let solve (goal : goal) (solution : term) : tac<unit> =
      let e = goal_env goal in
      mlog (fun () -> BU.print2 "solve %s := %s\n" (tts e (goal_witness goal)) (tts e solution)) (fun () ->
      bind (trysolve goal solution) (fun b ->
      if b
      then bind __dismiss (fun () -> remove_solved_goals)
  
negative.code:     in
      bind (__tc env t) (fun (t, typ, guard) ->
      mlog (fun () -> BU.print2 "__exact_now: got type %s\n__exact_now: and guard %s\n"
                                                       (Print.term_to_string typ)
                                                       (Rel.guard_to_string (goal_env goal) guard)) (fun _ ->
      bind (proc_guard "__exact typing" (goal_env goal) guard goal.opts) (fun _ ->
      mlog (fun () -> BU.print2 "__exact_now: unifying %s and %s\n" (Print.term_to_string typ)
                                                                    (Print.term_to_string (goal_type goal))) (fun _ ->
      bind (do_unify (goal_env goal) typ (goal_type goal)) (fun b -> if b
      then solve goal t
      else fail4 "%s : %s does not exactly solve the goal %s (witness = %s)"
  