import logic theorem tst {a b c : Prop} : a → b → c → a ∧ b := begin intros (Ha, Hb, Hc), reverts (Hb, Ha), intros (Hb2, Ha2), apply (and.intro Ha2 Hb2), end theorem foo1 {A : Type} (a b c : A) (P : A → Prop) : P a → a = b → P b := begin intros (Hp, Heq), reverts (Heq, Hp), intro Heq, apply (eq.rec_on Heq), intro Pa, apply Pa end theorem foo2 {A : Type} (a b c : A) (P : A → Prop) : P a → a = b → P b := begin intros (Hp, Heq), apply (eq.rec_on Heq Hp) end print definition foo1 print definition foo2