functor (G : G) (W : sig type t = G.E.label val compare : t -> t -> int end)
  (UF : sig
          type elt = G.V.t
          type t
          val init : elt list -> t
          val find : elt -> t -> elt
          val union : elt -> elt -> t -> unit
        end)
  -> sig val spanningtree : Kruskal.G.t -> Kruskal.G.E.t list end