anchor.diff:      | Var "ApplyTF" -> true
       | _ -> false
   
  +//for Tm_abs terms, we do not generate their typing and interpretation
  +//if they are eta expansions (fun x -> f x), in which case we simply return the encoding of f
  +//or if they are of the form (fun x -> a + b), in which case we seem to be returning the encoding of a + b ... a bit confused about that
   let gen_typing_and_interpretation env vars t =
       let rec aux t xs = match t.tm, xs with
           | App(app, [f; {tm=FreeV y}]), x::xs
  
positive.code: 
          let encoding = mkAnd(tm_has_type_with_fuel, refinement) in
  
          let cvars = BU.remove_dups fv_eq (Term.free_variables refinement @ Term.free_variables tm_has_type_with_fuel) in
          let cvars = cvars |> List.filter (fun (y, _) -> y <> x && y <> fsym) in
  
  
negative.code:                 | None ->
                    match gen_typing_and_interpretation env vars body with
                    | Some t ->
                      //if the cache has not changed, we need not generate decls and decls', but if the cache has changed, someone might use them in future
                      let decls = if BU.smap_size env.cache = cache_size then [] else decls@decls' in
                      t, decls
                    | None ->
  