anchor.diff:  and atom_to_string (a: atom) =
       match a with
       | Var v -> "Var " ^ (P.bv_to_string v)
  -    | Match (t, _, _) -> "Match " ^ (t_to_string t)
  +    | Match (t, _) -> "Match " ^ (t_to_string t)
       | Rec (_,_, l) -> "Rec (" ^ (String.concat "; " (List.map t_to_string l)) ^ ")"
   
   let is_not_accu (x:t) =
  
positive.code: type atom = //JUST FSHARP
    | Var of var
    | Match of t * (* the scutinee *)
               (t -> t) * (* the computation that pattern matches the scrutiny *)
               ((t -> term) -> list<branch>) (* the computation that reconstructs the pattern matching, parameterized by the readback function *)
               // ZP: Keep the original branches to reconstruct just the patterns
               // NS: add a thunked pattern translations here
  
negative.code:       let args = map_rev (fun (x, q) -> (readback env x, q)) ts in
        U.mk_app (S.bv_to_name bv) args
  
      | Accu (Match (scrut, patterns), ts) ->
        let args = map_rev (fun (x, q) -> (readback env x, q)) ts in
        let head = 
          let scrut_new = readback env scrut in
  