Deixe denotar um problema (de decisão) no NP e deixe # denotar sua versão de contagem.
Em que condições é sabido que "X é NP-completo" "#X é # P-completo"?
É claro que a existência de uma redução parcimoniosa é uma dessas condições, mas isso é óbvio e a única condição de que tenho conhecimento. O objetivo final seria mostrar que nenhuma condição é necessária.
Falando formalmente, deve-se começar com o problema de contagem # definido por uma função e depois definir o problema de decisão em uma string de entrada como ?f : { 0 , 1 } ∗ → N X s f ( s ) ≠ 0