anchor.diff:          bind (if not (istrivial (goal_env goal) (U.mk_squash U_zero pre)) //lemma preconditions are in U_zero
                 then add_irrelevant_goal "apply_lemma precondition" (goal_env goal) pre goal.opts goal.label
                 else ret ()) (fun _ ->
  -        add_goals sub_goals)))))
  -    ))))))
  +        add_goals sub_goals))))
  +    )))))))
   
   let destruct_eq' (typ : typ) : option<(term * term)> =
       match U.destruct_typ_as_formula typ with
  
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 =
  