Constraint graphs and their unsatisfiability value #
The combinatorial core of Dinur's proof of the PCP theorem. A constraint
graph over an alphabet α is a finite multigraph whose edges each carry a
binary constraint on the labels of their endpoints; an assignment labels the
vertices, and the unsatisfiability value unsatVal is the least fraction of
edges any assignment leaves unsatisfied.
Dinur's amplification step is a transformation of constraint graphs that
preserves satisfiability (unsatVal = 0) while doubling unsatVal otherwise,
so all of that argument is phrased in terms of the definitions here.
Design #
- Vertices are
Fin numVertsand edges are indexed byFin numEdges, so parallel edges and self-loops are allowed. Both are essential: powering a constraint graph produces many parallel walk-edges, and the degree-reduction and expanderization steps add edges to a graph that may already have them. - Edges are directed (
tail/head) and constraints areBool-valued functions of the two endpoint labels, which keeps everything decidable and computable. Undirected graphs are modelled by including both orientations, which the analysis of random walks will require explicitly rather than implicitly. unsatFracdivides bynumEdges, so an edgeless graph gets value0by Lean'sx / 0 = 0convention. Every lemma below is stated so that this is the mathematically correct answer.
Main definitions #
ConstraintGraph,ConstraintGraph.Assignment,ConstraintGraph.SatisfiesConstraintGraph.unsatFrac— the fraction of edges an assignment failsConstraintGraph.unsatVal— the minimum ofunsatFracover all assignmentsConstraintGraph.Satisfiable
Main results #
unsatFrac_eq_zero_iff— an assignment wastes no edges exactly when it satisfies them allexists_assignment_unsatFrac_eq_unsatVal— the minimum is attainedunsatVal_eq_zero_iff_satisfiable— the gap-0case is satisfiabilityunsatVal_nonneg,unsatVal_le_one
A constraint graph over the alphabet α: a finite multigraph on the
vertices Fin numVerts, with edges indexed by Fin numEdges, each edge
carrying a binary constraint on the labels of its endpoints.
- numVerts : ℕ
- numEdges : ℕ
The source of an edge.
The target of an edge.
The constraint carried by an edge, as a predicate on the labels of its tail and its head, in that order.
Instances For
An assignment labels every vertex with a symbol of the alphabet.
Equations
- G.Assignment = (Fin G.numVerts → α)
Instances For
Whether the assignment a satisfies the edge e, as a Bool.
Instances For
The assignment a satisfies the edge e.
Instances For
Equations
The edges left unsatisfied by a.
Instances For
The fraction of edges that a leaves unsatisfied. An edgeless graph has
value 0.
Instances For
An assignment wastes no edges exactly when it satisfies every edge. This holds for the edgeless graph too, where both sides are trivially true.
A constraint graph is satisfiable when some assignment satisfies every edge.
Equations
- G.Satisfiable = ∃ (a : G.Assignment), ∀ (e : Fin G.numEdges), G.Satisfies a e
Instances For
The unsatisfiability value: the least fraction of edges any assignment leaves unsatisfied.
Equations
- G.unsatVal = Finset.univ.inf' ⋯ G.unsatFrac
Instances For
The minimum defining unsatVal is attained.
The zero-gap case is exactly satisfiability.
An unsatisfiable graph has an edge, since otherwise any labelling works.
On an unsatisfiable graph every assignment fails at least one edge, so its value is at least one edge's worth.
A positive value certifies unsatisfiability.