I "found" a reduction that works from HAMCIRCUIT to all languages. Of course it's probably wrong, but I don't know why:
The reduction is this:
We do a DFS from all the nodes (one by one). The minute we get to a back-aerch from a node to the node sitting at the base of the DFS, we count the nodes on the circle just found, and if the number is |V| (there is a HAMPATH), then we create whatever we want (and hence the "generality" of the proof).
Why is this wrong ?