Expanderizing a constraint system #
The second half of Dinur's preprocessing. Degree reduction makes the graph
regular; this step makes it an expander, by superposing a member of an
ExpanderFamily whose edges carry the trivially true constraint.
Adding constraints that are never violated cannot create unsatisfiability, and
it cannot destroy it either: the broken darts are exactly the old ones, while
the total number of darts grows from order · deg to
order · (deg + E.degree). So the value is scaled by exactly
deg / (deg + E.degree) — a constant factor, since both degrees are constants
after degree reduction — and satisfiability is unchanged. The spectral bound is
inherited from spectralBound_union.
Main definitions #
RegCSP.addTrivial— superpose a graph's edges with trivial constraintsRegCSP.expanderize— the case of a family expander
Main results #
RegCSP.card_unsatDarts_addTrivial— the broken darts are unchangedRegCSP.unsatFrac_addTrivial,unsatVal_addTrivial— the value scales bydeg / (deg + deg')RegCSP.satisfiable_addTrivial_iffRegCSP.spectralBound_expanderize— the result is an expander
theorem
Complexity.RegCSP.card_unsatDarts_addTrivial
{α : Type}
(R : RegCSP α)
(H : RegGraph)
(e : H.V ≃ R.graph.V)
(a : R.Assignment)
:
Only the original constraints can fail.
noncomputable def
Complexity.RegCSP.expanderize
{α : Type}
(R : RegCSP α)
[NumEnc R.graph.V]
(E : ExpanderFamily)
:
RegCSP α
R with a family expander superposed.
Equations
- R.expanderize E = R.addTrivial (E.graph R.graph.order) (E.vertexEquiv R.graph)
Instances For
@[simp]
theorem
Complexity.RegCSP.graph_expanderize
{α : Type}
(R : RegCSP α)
[NumEnc R.graph.V]
(E : ExpanderFamily)
:
theorem
Complexity.RegCSP.satisfiable_expanderize_iff
{α : Type}
(R : RegCSP α)
[NumEnc R.graph.V]
(E : ExpanderFamily)
: