functor (G : Sig.P->
  sig
    type g = G.t
    val transitive_closure : ?reflexive:bool -> g -> g
    val add_transitive_closure : ?reflexive:bool -> g -> g
    val transitive_reduction : ?reflexive:bool -> g -> g
    val replace_by_transitive_reduction : ?reflexive:bool -> g -> g
    val mirror : g -> g
    val complement : g -> g
    val intersect : g -> g -> g
    val union : g -> g -> g
  end