anchor.diff:                let (bs', args') =
                     List.fold_left (fun (bs, args) (arg, b) ->
                                       let (bs', arg') = process_pattern bs arg in
  -                                    (bs, (arg', b) :: args)) (bs, []) args
  +                                    (bs', (arg', b) :: args)) (bs, []) args
                 in
                 (bs', Pat_cons (fvar, List.rev args'))
               | Pat_var bvar ->
  
positive.code: 
  let find_let (lbs : list<letbinding>) (fvar : fv) =
    BU.find_map lbs (fun lb -> match lb.lbname with
                     | BU.Inl _ -> failwith "impossible"
                     | BU.Inr name ->
                       if fv_eq name fvar
                       then Some lb
  
negative.code: 
      | 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      
  
      | Tm_match(scrut, branches) ->
        let rec case (scrut : t) : t =
  