anchor.diff:    | "op_String_Access" -> Some ".[]"
     | "op_Array_Access" -> Some ".()"
     | _ -> 
  -    if BU.starts_with s "op__" then
  -      name_of_op(BU.substring_from s (String.length "op__"))
  +    if BU.starts_with s "op_" then
  +      let s = String.split ['_'] (BU.substring_from s (String.length "op_")) in
  +      match s with 
  +      | [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
       else
         None
   
  
positive.code:     (C.exists_lid  , "exists");
      (C.salloc_lid  , "alloc")
    ] in
    match (SS.compress t).n with 
      | Tm_fvar fv -> 
        begin match infix_prim_ops |> BU.find_opt (fun d -> fv_eq_lid fv (fst d)) with
          | Some op ->
            Some(snd op)
          | _ ->
  
negative.code:           else if fv_eq_lid fv C.sread_lid then Some fv.fv_name.v.str
            //else if fv.fv_name.v.str.Contains(U.field_projector_prefix) then Some fv.fv_name.v.str
            else None
    in
    match (SS.compress t).n with 
      | Tm_fvar fv -> 
        let s = if fv.fv_name.v.nsstr.Length=0 then fv.fv_name.v.str 
                else fv.fv_name.v.str.Substring(fv.fv_name.v.nsstr.Length+1) in 
        begin match string_to_op s with
          | Some t -> Some t
          | _ -> fallback fv
        end
      | _ -> None
  
  let is_true_pat (p:S.pat) : bool = match p.v with
  