Dinur's gap theorem for 3-SAT #
The mathematical conclusion of the development. Every 3CNF formula is turned into a constraint graph over a fixed constant-size alphabet, of size polynomial in the formula, which is satisfiable when the formula is and whose unsatisfiability value is at least a universal constant when it is not.
Three ingredients meet: the reduction of ThreeSATCSP carried across alphabets
by GapReduction, the expander family of ExpanderExists, and the amplifier of
Dinur, whose dichotomy supplies the gap after logarithmically many rounds.
What this does not supply is computability. gapGraph is defined through
Classical.choose — the expander family is obtained by counting, not
constructed — so it is a reduction in the mathematical sense only. Turning it
into a PCPVerifier, which additionally demands an FP query function and a
P verdict, needs an explicit expander family and a polynomial-time
implementation of every round.
Main definitions #
Complexity.dinurAmp— Dinur's amplifier, with the expander suppliedComplexity.gapGraph— the gap graph of a formula
Main results #
Complexity.satisfiable_gapGraph— completenessComplexity.gap_le_unsatVal_gapGraph— soundness, with a universal gapComplexity.numEdges_gapGraph_le— the size bound
Dinur's amplifier, with the expander family supplied.
Instances For
How many rounds of amplification a formula needs: enough that the doubling of the unsatisfiability value reaches the threshold, which is the bit length of the edge count.
Equations
- Complexity.gapRounds φ = Nat.log 2 (3 * List.length φ) + 1
Instances For
The gap graph of a formula: logarithmically many rounds of amplification applied to its constraint graph.
Equations
Instances For
Completeness.
The gap is at most one, as any unsatisfiability value is.
The size bound: a constant factor per round, and logarithmically many rounds, so polynomially many edges.