namespace tst variable {A : Type} attribute [reducible] definition foo₁ (a b c : A) (H₁ : a = b) (H₂ : c = b) : a = c := eq.trans H₁ (eq.symm H₂) lemma foo₂ (f : A → A → A) (a b c : A) (H₁ : a = b) (H₂ : c = b) : f a = f c := eq.symm H₂ ▸ H₁ ▸ rfl check foo₁ check foo₂ end tst check tst.foo₁ check tst.foo₂ print tst.foo₁