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:               if is_impure lc && not (is_reifiable env.tcenv lc)
                then fallback() //we know it's not pure; so don't encode it precisely
                else
                  let cache_size = BU.smap_size env.cache in
                  let vars, guards, envbody, decls, _ = encode_binders None bs env in
                  let lc, body =
                    if is_reifiable env.tcenv lc
  
negative.code:                 in
                  let key_body = mkForall([], vars, mkImp(mk_and_l guards, body)) in
                  let cvars = Term.free_variables key_body in
                  //adding free variables of the return type also to cvars
                  let cvars =
                    match arrow_t_opt with
                    | None   -> cvars
  