anchor.diff:           | _ ->  U.mk_app tm args
         in
         let fv_lid = P.lid_to_string (fv.fv_name.v) in
  -      if Option.isSome (List.find (fun x -> x = fv_lid) primops) then
  +      if (List.mem fv_lid primops) then
             readback_primops env fv_lid args
         else
             (match us with
  
positive.code:     | ("op_Minus", [Constant (Int i)]) -> readback env (Constant (Int (Z.minus_big_int i)))
      | ("op_Addition", [Constant (Int i1); Constant (Int i2)]) -> readback env (Constant (Int (Z.add_big_int i1 i2)))
      | ("op_Subtraction", [Constant (Int i1); Constant (Int i2)]) -> readback env (Constant (Int (Z.sub_big_int i1 i2)))
      | ("op_GreaterThan", [Constant (Int i1); Constant (Int i2)]) -> readback env (Constant (Bool (Z.gt_big_int i2 i2)))
      | ("equals", [typ; t1; t2]) -> readback env (Constant (Bool (readback env t1 = readback env t2)))
      | ("op_Negation", [Constant (Bool b)]) -> readback env (Constant (Bool (not b)))
      | ("c_and", [Constant (Bool b1); Constant (Bool b2)]) -> readback env (Constant (Bool (b1 && b2)))
      | ("c_or", [Constant (Bool b1); Constant (Bool b2)]) -> readback env (Constant (Bool (b1 || b2)))
      | _ -> failwith "Bad primitive op application"
  
  (* [readback] creates named binders and not De Bruijn *)
  
negative.code:   in
    let translated_type =
      match (SS.compress lb.lbtyp).n with
      | Tm_refine _ -> app (translate env bs lb.lbtyp) translated_def None
      | _ -> Constant Unit
    in
  
    // VD: For debugging purposes, I'm forcing a readback here, but I don't think this is  necessary
    debug (fun () ->
            match (SS.compress lb.lbtyp).n with
            | Tm_refine _ ->
                let readback_type = readback env translated_type in
                BU.print2 "<<< Type of %s is %s\n" (t_to_string translated_def) (P.term_to_string readback_type)
            | _ -> ());
  
    make_univ_abst lb.lbunivs bs
  
  and translate (env:Env.env) (bs:list<t>) (e:term) : t =
  