anchor.diff:                              (tts goal.context (U.mk_squash U_zero post))
                               (tts goal.context goal.goal_ty)
       else
  -        let solution = N.normalize [N.Beta] goal.context (S.mk_Tm_app tm uvs None goal.context.range) in
  +//NS: 01/24 ... looks redundant    
  +//        let solution = N.normalize [N.Beta] goal.context (S.mk_Tm_app tm uvs None goal.context.range) in
           bind (add_implicits implicits.implicits) (fun _ ->
           // We solve with (), we don't care about the witness if applying a lemma
           bind (solve goal U.exp_unit) (fun _ ->
  
positive.code:                 end
              )))))
  
  // The exception is thrown only when the tactic runs, not when it's defined,
  // so we need to do this to catch it
  let try_unif (t : tac<'a>) (t' : tac<'a>) : tac<'a> =
  
negative.code:             | Tm_uvar _ ->
                  ret ([{ goal with
                          witness = bnorm goal.context term;
                          goal_ty = 
                            //NS: 01/24 ...expensive
                            //bnorm goal.context typ
                            typ}], [])
              | _ ->
                  //NS:01/24: use the fast path instead
                  let g_typ =
                      FStar.TypeChecker.Env.check_type_of_well_typed_term false env term typ in
                  // let term = bnorm env term in
                  // let _, _, g_typ = env.type_of (Env.set_expected_typ env typ) term in
                  bind (goal_from_guard "apply_lemma solved arg" goal.context g_typ goal.opts) (function
                  | None -> ret ([], [])
                  | Some g -> ret ([], [g])
  