open tactic

meta_definition rewriteH (Hname : name) : tactic unit :=
do get_local Hname >>= rewrite_core reducible tt occurrences.all ff,
   try reflexivity

example (l : list nat) : list.append l [] = l :=
by do
  get_local `l >>= λ H, induction_core semireducible H `list.rec_on [`h, `t, `iH],
  --
  unfold [`list.append],
  trace_state,
  trace "------",
  reflexivity,
  unfold [`list.append],
  trace_state,
  rewriteH `iH
