Declarative problem-solving in DLV