functor
  (G : G_GOLDBERG_TARJAN) (F : sig
                                 type t
                                 type label = G.E.label
                                 val max_capacity : label -> t
                                 val flow : label -> t
                                 val add : t -> t -> t
                                 val sub : t -> t -> t
                                 val zero : t
                                 val compare : t -> t -> int
                               end->
  sig val maxflow : G.t -> G.V.t -> G.V.t -> (G.E.t -> F.t) * F.t end