functor (G : G->
  functor
    (A : sig
           type data
           type label = G.E.label
           type vertex = G.V.t
           type cfg = G.t
           val direction : direction
           val join : data -> data -> data
           val equal : data -> data -> bool
           val analyze : label -> data -> data
         end->
    sig val analyze : (G.V.t -> A.data) -> A.cfg -> G.V.t -> A.data end