sig
  val transitive_reduction : G.t -> unit
  module O :
    sig
      type g = G.t
      val transitive_closure : ?reflexive:bool -> g -> g
      val add_transitive_closure : ?reflexive:bool -> g -> g
      val mirror : g -> g
      val complement : g -> g
      val intersect : g -> g -> g
      val union : g -> g -> g
    end
end