meta def tactic.intro : name → tactic expr :=
λ (n : name),
  tactic.target >>= λ (t : expr),
    ite (↑(expr.is_pi t) ∨ ↑(expr.is_let t)) (tactic.intro_core n) (tactic.whnf_target >> tactic.intro_core n)
