anchor.diff:          ret <| Tv_App (S.mk_Tm_app hd (init args) None t.pos, (a, q')) // TODO: The range and tk are probably wrong. Fix
   
       | Tm_abs ([], _, _) ->
  -        failwith "inspect: empty arguments on Tm_abs"
  +        failwith "empty arguments on Tm_abs"
   
       | Tm_abs (bs, t, k) ->
           let bs, t = SS.open_term bs t in
  
positive.code:         ret <| Tv_FVar fv
  
      | Tm_app (hd, []) ->
          failwith "inspect: empty arguments on Tm_app"
  
      | Tm_app (hd, args) ->
          // We split at the last argument, since the term_view does not
  
negative.code:          end)
  
  (* TODO: move to bv *)
  let norm_binder_type (s : list<EMB.norm_step>) (b : binder) : tac<unit> = wrap_err "norm_binder_type" <|
      bind (cur_goal ()) (fun goal ->
      let bv, _ = b in
      match split_env bv goal.context with
      | None -> fail "binder is not present in environment"
      | Some (e0, bvs) -> begin
          let steps = [N.Reify; N.UnfoldTac]@(N.tr_norm_steps s) in
          let sort' = normalize steps e0 bv.sort in
  