functor
  (G : G_GOLDBERG) (F : sig
                          type t
                          type label = G.E.label
                          val max_capacity : label -> t
                          val min_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