On enumerating minimal siphons in Petri nets using CLP and SAT solvers: theoretical and practical complexity