open list tactic option constants (A : Type.{1}) (x y z : A) (Hy : x = y) (Hz : y = z) constants (f₁ : A → A) (f₂ : A → A → A) meta_definition simp_x_to_y : tactic unit := mk_eq_simp_ext $ λ e, do res ← mk_const `y, pf ← mk_const `Hy, return (res, pf) meta_definition simp_y_to_z : tactic unit := mk_eq_simp_ext $ λ e, do res ← mk_const `z, pf ← mk_const `Hz, return (res, pf) register_simp_ext x simp_x_to_y register_simp_ext y simp_y_to_z print [simp_ext] example : x = z := by simp example : f₁ x = f₁ y := by simp example : f₁ (f₂ x y) = f₁ (f₂ z z) := by simp example : f₁ (f₂ x y) = f₁ (f₂ y x) := by simp