anchor.diff:              List.fold_left(fun acc x -> mk (A.App(acc, x, A.Nothing))) e args
           end
   
  -      | Some "dtuple" ->
  +      | Some ("dtuple",_) ->
           resugar_as_app e args
   
  -      | Some ref_read when (ref_read = C.sread_lid.str) ->
  +      | Some (ref_read, _) when (ref_read = C.sread_lid.str) ->
           let (t, _) = List.hd args in
           begin match (SS.compress t).n with
             | Tm_fvar fv when (U.field_projector_contains_constructor fv.fv_name.v.str) ->
  
positive.code:           | _ -> resugar_as_app e args
          end
  
        | Some "dtuple" when List.length args > 0 ->
          (* this is desugared from Sum(binders*term) *)
          let args = last args in
          let body = match args with
  
negative.code:       | [op] -> name_of_op op
        | _ ->
          let op = List.fold_left(fun acc x -> match x with
                                    | Some (op, _) -> acc ^ op
                                    | None -> failwith "wrong composed operator format")
                                    "" (List.map name_of_op s)  in
          Some (op, 0)
      else
        None
  
  let rec resugar_term_as_op(t:S.term) : option<(string*int)> =
    let infix_prim_ops = [
      (C.op_Addition    , "+" );
      (C.op_Subtraction , "-" );
  