functor (M : S1-> Gen(M.T).S