NP-SPEC: an executable specification language for solving all problems in NP