polynomial-time many-one reduction