\func Rel (A : \Set) : \Set => A -> A -> \Prop \truncated \data transitive-closure {A : \Set} (R : Rel A) (a b : A) : \Prop | tc-direct (a `R` b) | tc-connect (c : A) (a `R` c) (transitive-closure R c b) \truncated \data transitive-refl-closure {A : \Set} (R : Rel A) (a b : A) : \Prop | trc-direct (a = b) | trc-connect (c : A) (a `R` c) (transitive-refl-closure R c b) \cons trc-unary {A : \Set} {R : Rel A} {a b : A} (p : a `R` b) : transitive-refl-closure R a b => trc-connect b p (trc-direct idp) \cons trc-direct' {A : \Set} {R : Rel A} {a : A} : transitive-refl-closure R a a => trc-direct idp \truncated \data symmetric-closure {A : \Set} (R : Rel A) (a b : A) : \Prop | sc-left (a `R` b) | sc-right (b `R` a) \truncated \data reflexive-closure {A : \Set} (R : Rel A) (a b : A) : \Prop | rc-id (a = b) | rc-rel (a `R` b)