open tactic set_option pp.binder_types true definition foo (A : Type) : A → A := sorry example (a : nat) (H : foo unit () = ()) : true := by do (lhs, rhs) ← get_local `H >>= infer_type >>= match_eq , get_spec_subsingleton_info lhs >>= trace, trace "-----------", trace "ite information:", c ← mk_const `ite, get_fun_info c >>= trace, trace "eq.rec information:", c ← mk_const `eq.rec, get_fun_info c >>= trace, trace "and.intro information:", c ← mk_const `and.intro, get_fun_info c >>= trace, mk_const `trivial >>= exact