anchor.diff:      else
           None
   
  +let rec fold_left (f : ('a -> 'b -> tac<'b>)) (e : 'b) (xs : list<'a>) : tac<'b> =
  +    match xs with
  +    | [] -> ret e
  +    | x::xs -> bind (f x e) (fun e' -> fold_left f e' xs)
  +
   let apply_lemma (tm:term) : tac<unit> = wrap_err "apply_lemma" <| focus (
       bind get (fun ps ->
       mlog (fun () -> BU.print1 "apply_lemma: tm = %s\n" (Print.term_to_string tm)) (fun _ ->
  
positive.code:             | _ -> false
              end
          in
          bind (implicits.implicits |> mapM (fun imp ->
              let term = imp.imp_tm in
              let ctx_uvar = imp.imp_uvar in
              let hd, _ = U.head_and_args term in
              match (SS.compress hd).n with
              | Tm_uvar (ctx_uvar, _) ->
  
negative.code:                             (tts (goal_env goal) (U.mk_squash U_zero post))
                              (tts (goal_env goal) (goal_type goal))
      else
          // We solve with (), we don't care about the witness if applying a lemma
          bind (solve' goal U.exp_unit) (fun _ ->
          let is_free_uvar uv t =
  