functor (X : Input_with_arg-> Fundec_set