anchor.diff:                      let goal = N.normalize [N.Simplify; N.Primops] env goal in
                       match check_trivial goal with
                       | Trivial ->
  -                        if (Env.debug env <| Options.Other "Rel") || (Env.debug env <| Options.Other "Tac")
  +                        if debug
                           then BU.print_string "Goal completely solved by tactic\n";
                           () // do nothing
   
  
positive.code:                         FStar.Options.push ();
                          FStar.Options.set opts;
                          maybe_update_proof_ns env;
                          if Env.debug env <| Options.Other "Rel"
                          then Errors.diag (Env.get_range env)
                                           (BU.format2 "Trying to solve:\n> %s\nWith proof_ns:\n %s\n"
                                                   (Print.term_to_string goal)
                                                   (Env.string_of_proof_ns env));
                          if Env.debug env <| Options.Other "Norm"
                          || Env.debug env <| Options.Other "SMTQuery"
                          then Errors.diag (Env.get_range env)
                                           (BU.format1 "Before calling solver VC=\n%s\n" (Print.term_to_string goal));
                          let res = env.solver.solve use_env_range_msg env goal in
  
negative.code: //if use_smt = true, this function NEVER returns None, the error might come from the smt solver though
  //if use_smt = false, then None means could not discharge the guard without using smt
  let discharge_guard' use_env_range_msg env (g:guard_t) (use_smt:bool) : option<guard_t> =
    let debug =
         (Env.debug env <| Options.Other "Rel")
      || (Env.debug env <| Options.Other "SMTQuery")
      || (Env.debug env <| Options.Other "Tac")
    in
    let g = solve_deferred_constraints env g in
    let ret_g = {g with guard_f = Trivial} in
    if not (Env.should_verify env) then Some ret_g
  