anchor.diff:              | [] | [_] -> failwith "last two elements of a list with less than two elements "
               | [a1;a2] -> [a1;a2]
               | _::t -> last_two t
  -      in
  -      let rec last_three = function
  -            | [] | [_] | [_;_] -> failwith "last three elements of a list with less than three elements "
  -            | [a1;a2;a3] -> [a1;a2;a3]
  -            | _::t -> last_three t
         in
         let resugar_as_app e args =
           let args =
  
positive.code:   let fallback fv =
      match infix_prim_ops |> BU.find_opt (fun d -> fv_eq_lid fv (fst d)) with
      | Some op ->
        Some (snd op, 0)
      | _ ->
        let length = String.length(fv.fv_name.v.nsstr) in
        let str = if length=0 then fv.fv_name.v.str
            else BU.substring_from fv.fv_name.v.str (length+1) in
        if BU.starts_with str "dtuple" then Some ("dtuple", 0)
        else if BU.starts_with str "tuple" then Some ("tuple", 0)
        else if BU.starts_with str "try_with" then Some ("try_with", 0)
        else if fv_eq_lid fv C.sread_lid then Some (fv.fv_name.v.str, 0)
        else None
    in
    match (SS.compress t).n with
  
negative.code: 
  let string_to_op s =
    let name_of_op = function
      | "Amp" ->  Some ("&", None)
      | "At" -> Some ("@", None)
      | "Plus" -> Some ("+", None)
      | "Minus" -> Some ("-", None)
      | "Subtraction" -> Some ("-", Some 2)
      | "Tilde" -> Some ("~", None)
      | "Slash" -> Some ("/", None)
      | "Backslash" -> Some ("\\", None)
      | "Less" -> Some ("<", None)
      | "Equals" -> Some ("=", None)
      | "Greater" -> Some (">", None)
      | "Underscore" -> Some ("_", None)
      | "Bar" -> Some ("|", None)
      | "Bang" -> Some ("!", None)
      | "Hat" -> Some ("^", None)
      | "Percent" -> Some ("%", None)
      | "Star" -> Some ("*", None)
      | "Question" -> Some ("?", None)
      | "Colon" -> Some (":", None)
      | "Dollar" -> Some ("$", None)
      | "Dot" -> Some (".", None)
      | _ -> None
    in
    match s with
    | "op_String_Assignment" -> Some (".[]<-", None)
    | "op_Array_Assignment" -> Some (".()<-", None)
    | "op_String_Access" -> Some (".[]", None)
    | "op_Array_Access" -> Some (".()", None)
    | _ ->
      if BU.starts_with s "op_" then
        let s = BU.split (BU.substring_from s (String.length "op_"))  "_" in
  