anchor.diff:      | letrecs ->
         let r = Env.get_range env in
         let env = {env with letrecs=[]} in
  -      let precedes = TcUtil.fvar_const env Const.precedes_lid in
   
         let decreases_clause bs c =
             if debug env Options.Low
  
positive.code: (* Some local utilities *)
  let instantiate_both env = {env with Env.instantiate_imp=true}
  let no_inst env = {env with Env.instantiate_imp=false}
  
  let rec mk_lex_tuple vs =
    match vs with
    | [] -> failwith "Did not expect an empty lex list"
    | [x] -> x
    | hd::tl ->
      let rest = mk_lex_tuple tl in
      let r =
        if rest.pos = Range.dummyRange
        then hd.pos
        else Range.union_ranges hd.pos rest.pos in
      mk_Tm_app
        (fvar Const.lid_Mktuple2 delta_constant (Some Data_ctor))
        [as_arg hd; as_arg rest]
        r
  
  let is_eq = function
      | Some Equality -> true
  
negative.code:         //make sure they all have non-null names
          let formals = formals |> List.map (fun (x, imp) -> if S.is_null_bv x then (S.new_bv (Some (S.range_of_bv x)) x.sort, imp) else x,imp) in
          let dec = decreases_clause formals c in
          let precedes = mk_precedes_lex dec previous_dec in
          let precedes = TcUtil.label "Could not prove termination of this recursive call" r precedes in
          let bs, (last, imp) = BU.prefix formals in
          let last = {last with sort=U.refine last precedes} in
  