-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathComplexitylib.lean
More file actions
70 lines (59 loc) · 2.81 KB
/
Copy pathComplexitylib.lean
File metadata and controls
70 lines (59 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/-
Copyright (c) 2025 Samuel Schlesinger. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Samuel Schlesinger
-/
module
public import Complexitylib.Models
public import Complexitylib.Encoding
public import Complexitylib.Asymptotics
public import Complexitylib.TimeConstructible
public import Complexitylib.Classes
public import Complexitylib.Languages
public import Complexitylib.SAT
public import Complexitylib.Circuits
public import Complexitylib.BooleanAnalysis
public import Complexitylib.DescriptiveComplexity
/-!
# Complexitylib
The root module: importing it brings in the library's complete public
surface. Import an area module (`Complexitylib.Models`,
`Complexitylib.Classes`, …) instead to keep dependencies smaller.
## Headline theorems
Machine-checked with no `sorry` and no custom axioms — CI audits every
Complexitylib declaration for dependencies beyond `propext`,
`Classical.choice`, and `Quot.sound` (`scripts/AxiomGuard.lean`).
**Cook–Levin: SAT is NP-complete.**
- `Complexity.SAT.NPComplete_language` — `NPComplete SAT.language`
- `Complexity.SAT.language_mem_NP` — `SAT.language ∈ NP`
- `Complexity.SAT.pairLang_witness_mem_P` — the SAT verifier runs in
polynomial time
**Universal simulation.**
- `Complexity.TM.UTMBody.utmTM_universal` — a fixed machine simulates any
encoded machine with explicit time overhead (Arora–Barak Theorem 1.9)
- `Complexity.TM.UTMBody.utmTM_universal_padded` — the padded-encoding
variant
**Deterministic time hierarchy.**
- `Complexity.time_hierarchy_weak` — more time decides strictly more
languages, in a concrete clock-constructible formulation
- `Complexity.time_hierarchy_weak_ssubset`, `Complexity.DTIME_pow_ssubset`
— strict polynomial separations such as
`DTIME((n+1)^a) ⊂ DTIME((n+1)^(2a+5))`
**Structural containments.** `Complexity.P_subset_NP`,
`Complexity.P_subset_PSPACE`, `Complexity.P_subset_PPoly`,
`Complexity.UniformPPoly_subset_P`,
`Complexity.PAdvice_subset_PPoly`, `Complexity.PPoly_subset_PAdvice`,
`Complexity.RP_subset_NP`, `Complexity.BPP_subset_PPoly`,
`Complexity.BPP_subset_PAdvice`, and `Complexity.BPP_subset_PP`. The nonuniform
equivalence lives in `Complexitylib.Classes.PPoly.Advice`, while randomized
hardwiring and its advice corollary live in
`Complexitylib.Classes.Randomized.PPoly`; the broader time/space index is
`Complexitylib.Classes.Containments`.
**Circuit lower bounds.** Shannon's counting bound, gate-elimination
(`Circuit.card_essentialInputs_le_mul_size`), Schnorr's XOR bound
(`Complexity.sizeComplexity_xorBool_ge`), and Valiant's depth reduction
(`Complexity.Valiant.depth_reduction`).
**Barrington's theorem.** `Complexity.barrington_equivalence` identifies
logarithmic-depth Boolean formula families with polynomial-length width-`5`
permutation branching-program families.
-/