This library contains complexity theory. It is built upon the Coq Library of Undecidability Proofs.
Complexity: basic notions of complexity theory, formulated for the call-by-value lambda calculusLHierarchyTheorem: the Time Hierarchy TheoremNP: NP hardness and completeness proofsNP/SAT: the Cook Levin TheoremL/AbstractMachines: universal machines for L and their computability and resource analysisL/TM: theL-computability of Turing machine related conceptsTM: theTM-computability results and resource analysis of concrete TMsLibs: internal library files used in multiple other directories
There are two documented ways to install the dependencies of this library. This library depends on the Coq Library of Undecidability Proofs, which is either provided as a git submodule or as opam package.
The recommended way to install dependencies is to checkout the submodules of this git repository with git submodule update --init --recursive and install all dependencies of the complexity library using make depssubmodule. This has the benefit of only compiles the files of the undecidability library actually needed by the complexity library.
Or use the make depsopam to install all dependencies using opam. The undecidability library is then automatically opam pinned to a specific git hash.
make allbuilds the library and the dependenciesmake depssubmodulebuilds the dependencies using the submodule for the undecidability library and opam for everything elsemake depsopambuilds the dependencies using opam for everythingmake htmlgenerates clickable coqdoc.htmlin thewebsitesubdirectorymake cleanremoves all build files intheoriesand.htmlfiles in thewebsitedirectorymake realcleanremoves the build files of the dependencies as well as everythingmake cleanremoves
Be careful that this branch only compiles under Coq 8.12.
- Formal Small-step Verification of a Call-by-value Lambda Calculus Machine. Fabian Kunze, Gert Smolka, and Yannick Forster. APLAS 2018. Subdirectory
L/AbstractMachines. https://www.ps.uni-saarland.de/extras/cbvlcm2/ - The Weak Call-By-Value λ-Calculus is Reasonable for Both Time and Space.Yannick Forster, Fabian Kunze, Marc Roth. POPL 2020. Mechanised parts in
L/AbstractMachinesandSpaceboundsTime.vhttps://www.ps.uni-saarland.de/extras/wcbv-reasonable/
We make heavy use of the following results, which for technical reasons are oursourced to the Library of Undecidability Proofs.
We use two frameworks which ease computability proofs with resource analysis for call-by-value lambda-calculus and Turing machines:
- A certifying extraction with time bounds from Coq to call-by-value lambda-calculus. ITP '19. https://github.com/uds-psl/certifying-extraction-with-time-bounds
- Verified Programming of Turing Machines in Coq. Yannick Forster, Fabian Kunze, Maximilian Wuttke. Technical report. https://github.com/uds-psl/tm-verification-framework/
- Fabian Kunze
- Lennard Gäher
- Maximilian Wuttke
- Yannick Forster