anchor.diff:  
       | Tm_app(head, args) ->
         debug (fun () -> BU.print2 "Application: %s @ (%s)\n" (P.term_to_string head) (P.args_to_string args));
  -      iapp cfg (translate cfg bs head) (List.map (fun x -> (translate cfg bs (fst x), snd x)) args) // Zoe : TODO avoid translation pass for args
  +      iapp (translate cfg bs head) (List.map (fun x -> (translate cfg bs (fst x), snd x)) args) // Zoe : TODO avoid translation pass for args
   
       | Tm_match(scrut, branches) ->
         let rec case (scrut : t) : t =
  
positive.code:               | Some x -> debug (fun () -> BU.print2 "Primitive operator %s returned %s\n" (P.fv_to_string fvar) (t_to_string x));
                           x
                | None -> debug (fun () -> BU.print1 "Primitive operator %s failed\n" (P.fv_to_string fvar)); 
                         iapp cfg (mkFV fvar [] []) args'),
                (let f (_:int) () : t * S.aqual = (Constant Unit, None) in tabulate arity f),
                arity)
  
  
negative.code:     | Tm_uinst(t, us) ->
        debug (fun () -> BU.print2 "Uinst term : %s\nUnivs : %s\n" (P.term_to_string t)
                                                                (List.map P.univ_to_string us |> String.concat ", "));
        iapp (translate cfg bs t) (List.map (fun x -> as_arg (Univ (translate_univ bs x))) us)
  
      | Tm_type u ->
        Type_t (translate_univ bs u)
  