What are the major steps in proving a problem is #P-complete?
For example, I know that showing a problem is NP-complete requires (i) showing the problem is in NP by giving a polytime verification algorithm, (ii) showing an existing NP-hard problem is polytime reducible to the given problem.
What would be the corresponding steps for a #P-completeness proof? Any resources would be helpful.
From Wikipedia I have: "By definition, a problem is #P-complete if and only if it is in #P, and every problem in #P can be reduced to it by a polynomial-time counting reduction..."
What makes a problem be in #P? Would reducing an exiting #P-complete problem to a given problem be enough?