Constraint graphs on a regular graph #
Dinur's argument runs on constraint graphs whose underlying multigraph is
d-regular, because that is what makes random walks and the spectral gap
available. This module puts the two halves together: a RegCSP is a RegGraph
together with a constraint attached to each dart, symmetric under reversal,
so that it is really one constraint per undirected edge.
The measure on constraints is the uniform measure on darts: unsatFrac
divides the number of unsatisfied darts by order * deg. Constraints are
attached to darts rather than to undirected edges, and are not required to
agree with their reverse. Nothing is lost: the random walk traverses darts, so
the dart measure is the one every estimate is stated in, and the eventual
verifier samples a dart and checks one constraint. Requiring symmetry instead
would force each construction — powering above all — to prove that reversing a
walk and swapping the two opinions leaves its constraint unchanged, an
index-reversal argument of no mathematical content.
Two presentations of a constraint system coexist in this development, on
purpose. ConstraintGraph has its vertex and edge counts as numeric fields,
so it is a single type that a transformation can be iterated on (see
Amplifier) and that a bitstring encoding can address; RegCSP carries
structured vertex and dart types, which is what Dinur's constructions produce.
The bijective bridge between them belongs to the final encoded reduction and is
built there.
Main definitions #
RegCSP,RegCSP.Dart,RegCSP.Assignment,RegCSP.satisfies,RegCSP.Satisfies,RegCSP.Satisfiable,RegCSP.unsatDartsRegCSP.unsatFrac,RegCSP.unsatVal— the fraction of darts an assignment fails, and its minimum over assignments
Main results #
RegCSP.unsatFrac_eq_zero_iff,RegCSP.unsatVal_eq_zero_iff_satisfiable— value zero is satisfiabilityRegCSP.unsatVal_nonneg,RegCSP.unsatVal_le_oneRegCSP.inv_card_dart_le_unsatVal— an unsatisfiable system has value at least one dart's worth
A constraint system on a regular multigraph: one constraint per dart.
- graph : RegGraph
The underlying regular multigraph.
The constraint on the dart
(v, i), as a predicate on the label ofvand the label of itsi-th neighbour, in that order.
Instances For
An assignment labels every vertex with a symbol of the alphabet.
Equations
- R.Assignment = (R.graph.V → α)
Instances For
Equations
The darts left unsatisfied by a.
Equations
- R.unsatDarts a = {p : R.Dart | ¬R.Satisfies a p}
Instances For
Some assignment satisfies every dart.
Equations
- R.Satisfiable = ∃ (a : R.Assignment), ∀ (p : R.Dart), R.Satisfies a p
Instances For
An assignment wastes no darts exactly when it satisfies them all.