This repository sets out to formalize some classic results about NP-completeness in Isabelle/HOL.
The theories in this repository are developed with the current development version of Isabelle and the AFP.
For checking and browsing the theories, the following additional sessions are needed:
- ML-Typeclasses: make it available in the same way as the AFP, i.e., with
isabelle components -u /path/to/ml-typeclasses.
You have to tell Isabelle about the multiple sessions the project defines: isabelle components -u /path/to/this/repository.
Now, you can use isabelle build -D . in the root folder of this repository to check all sessions.
The following reductions are currently formalized:

A work plan is summarized here.
So far the following classic reductions between NP-hard problems have been formalized:
TSAT_To_SC.thy: 3CNF-SAT <= Independent Set <= Vertex Cover <= Set CoverCNF_SAT_To_Clique.thy: 3CNF-SAT <= CliqueHC_To_UHC.thy: Hamiltonian Cycle <= Undicrected Hamiltonian CycleVC_To_FNS.thy: Vertex Cover <= Feedback Node SetVC_To_HC.thy: Vertex Cover <= Hamiltonian Cycle
VC_Set_To_VC_List.thy: The representation ofVertex Coverusing list makes the reduction fromVertex CovertoHamiltonian Cycleeasier. The rest of the repository uses the representation with sets.List_Auxiliaries.thycontains a definition of a sublist used to describe paths.Graph_Auxiliaries.thyandGraph_Auxiliaries.thycontain some basic lemmas used at different places.Vwalk_Cycle.thycontains a new definition of a cycle in a graph based onvwalk. The standard definition is based onawalk.