prelude definition Prop : Sort.{1} := Sort.{0} section parameter A : Sort* definition Eq (a b : A) : Prop := ∀P : A → Prop, P a → P b @[elab_simple] theorem subst (P : A → Prop) (a b : A) (H1 : Eq a b) (H2 : P a) : P b := H1 P H2 theorem refl (a : A) : Eq a a := λ (P : A → Prop) (H : P a), H theorem symm (a b : A) (H : Eq a b) : Eq b a := subst (λ x : A, Eq x a) a b H (refl a) theorem trans (a b c : A) (H1 : Eq a b) (H2 : Eq b c) : Eq a c := subst (λ x : A, Eq a x) b c H2 H1 end #check subst.{1} #check refl.{1} #check symm.{1} #check trans.{1}