
example (a b : nat) (p : nat → nat → Prop) (h₁ : p a b) (h₂ : a = b) : p b b :=
@@eq.subst (λ x, p x b) h₂ h₁

set_option pp.all true

variable my_has_add : has_add nat
check @@add my_has_add 0 1

local notation h1 `▸[` m `]` h2 := @@eq.subst m h1 h2

example (a b : nat) (p : nat → nat → Prop) (h₁ : p a b) (h₂ : a = b) : p b b :=
h₂ ▸[λ x, p x b] h₁
