definition Prop : Type.{1} := Type.{0} variable and : Prop → Prop → Prop section parameter {A : Type} -- Mark A as implicit parameter parameter R : A → A → Prop parameter B : Type definition id (a : A) : A := a private definition refl : Prop := ∀ (a : A), R a a definition symm : Prop := ∀ (a b : A), R a b → R b a definition trans : Prop := ∀ (a b c : A), R a b → R b c → R a c definition equivalence : Prop := and (and refl symm) trans end check id.{2} check trans.{1} check symm.{1} check equivalence.{1} (* local env = get_env() print(env:find("equivalence"):value()) *)