anchor.diff:      List.rev l, decls
   
   (* this assumes t is a Lemma *)
  -and encode_function_type_as_formula (induction_on:option<term>) (new_pats:option<S.term>) (t:typ) (env:env_t) : term * decls_t =
  +and encode_function_type_as_formula (t:typ) (env:env_t) : term * decls_t =
       let list_elements (e:S.term) : list<S.term> =
         match U.list_elements e with
         | Some l -> l
  
positive.code:           let binders, c = SS.open_comp binders c in
            begin match c.n with
              | Comp ({effect_args=[(pre, _); (post, _); (pats, _)]}) ->
                let pats' = (match new_pats with
                            | Some new_pats' -> new_pats'
                            | None           -> pats) in
                binders, pre, post, lemma_pats pats'
              | _ -> failwith "impos"
            end
  
  
negative.code: 
  let encode_smt_lemma env fv t =
      let lid = fv.fv_name.v in
      let form, decls = encode_function_type_as_formula t env in
      decls@[Util.mkAssume(form, Some ("Lemma: " ^ lid.str), ("lemma_"^lid.str))]
  
  let encode_free_var env fv tt t_norm quals =
  