functor (S : Set.S-> sig val red : S.t Reducer.t end