anchor.diff:          | [(Inl t1, _);(Inl t2, _);(Inl t3, _)] -> format3 "if %s then %s else %s" (formula_to_string t1) (formula_to_string t2) (formula_to_string t3)
           | _ -> failwith "impos" in
       let eq_op = function 
  -        | [(Inl _, _); (Inl _, _); (Inr e1, _); (Inr e2, _)]
  +        | [(Inl t1, _); (Inl t2, _); (Inr e1, _); (Inr e2, _)] -> 
  +          if !Options.print_implicits
  +          then format4 "Eq2 %s %s %s %s" (typ_to_string t1) (typ_to_string t2) (exp_to_string e1) (exp_to_string e2)
  +          else format2 "%s == %s" (exp_to_string e1) (exp_to_string e2)
           | [(Inr e1, _); (Inr e2, _)] -> format2 "%s == %s" (exp_to_string e1) (exp_to_string e2)
           |  _ -> failwith "Impossible" in
       let connectives = [(Const.and_lid,  bin_top "/\\");
  
positive.code:         | Inr e -> Util.format1 "(<Expected a type!>%s)" (exp_to_string e) in
        let qbinder_to_string = q_to_string (fun x -> binder_to_string (fst x)) in
        let qbody_to_string = q_to_string (fun x -> typ_to_string (snd x)) in
        let args' = List.filter (fun a -> not (snd a)) args in (* drop implicit arguments for type operators *)
        if is_ite t && List.length args = 3 then
          format3 "if %s then %s else %s" (arg_to_string (List.nth args 0)) (arg_to_string (List.nth args 1)) (arg_to_string (List.nth args 2))
        else if is_b2t t && List.length args = 1 then List.nth args 0 |> arg_to_string
  
negative.code:   | false -> s
  
  and binder_to_string b = match b with 
      | Inl a, imp -> if is_null_binder b then kind_to_string a.sort 
                      else if not (!Options.print_implicits) then imp_to_string (strBvd a.v) imp
                      else imp_to_string ((strBvd a.v) ^ ":" ^ (kind_to_string a.sort)) imp
      | Inr x, imp -> if is_null_binder b then typ_to_string x.sort 
                      else if not (!Options.print_implicits) then imp_to_string (strBvd x.v) imp
                      else imp_to_string ((strBvd x.v) ^ ":" ^ (typ_to_string x.sort)) imp
     
  and binders_to_string sep bs =
      let bs = if !Options.print_implicits then bs else List.filter (fun (_,i) -> not i) bs in
  