Definition 3.1   For languages \(X, Y \subseteq \{0,1\}^*\), \(X\) is said to be polynomial time many-one reducible to \(Y\) just in case there exists a polynomial time computable function \(f(x)\) such that