open tactic definition tst2 (a : nat) : a = a := by do assert `x (expr.const `nat []), rotate 1, trace_state, a ← get_local `a, mk_app `eq.refl [a] >>= exact, a ← get_local `a, exact a, return () print tst2 definition tst3 (a b : nat) : a = a := by do define `x (expr.const `nat []), rotate 1, trace_state, x ← get_local `x, mk_app `eq.refl [x] >>= exact, trace "-- second goal was indirectly solved by the previous tactic", trace_state, return () definition tst4 (a : nat) : a = a := begin assert x : nat, rotate 1, exact eq.refl a, exact a end definition tst5 (a : nat) : a = a := begin definev x : nat := a, trace_state, exact eq.refl x end definition tst6 (a : nat) : a = a := begin note x := a, trace_state, exact eq.refl x end