universe variables u inductive Vec (α : Type u) : nat → Type u | nil : Vec 0 | cons : ∀ {n}, α → Vec n → Vec (nat.succ n) constant f {α : Type u} {n : nat} : Vec α n → nat axiom fax1 (α : Type u) : f (Vec.nil α) = 0 axiom fax2 {α : Type u} {n : nat} (v : Vec α (nat.succ n)) : f v = 1 open tactic meta def pp_state_core : tactic format := do t ← target, t_fmt ← pp t, return $ to_fmt "Goal: " ++ t_fmt meta def pp_state (s : tactic_state) : format := match pp_state_core s with | result.success r _ := r | result.exception _ _ _ := "failed to pretty print" end meta instance i2 : has_to_format tactic_state := ⟨λ s, to_fmt "My custom goal visualizer" ++ format.line ++ pp_state s⟩ example {α : Type u} {n : nat} (v : Vec α n) : f v ≠ 2 := begin destruct v, intros, intro, note h := fax1 α, cc, -- intros n1 h t, intros, intro, note h := fax2 (Vec.cons h t), cc end open nat example : ∀ n, 0 < n → succ (pred n) = n := begin intro n, destruct n, dsimp, intros, note h := lt_irrefl 0, cc, end