Constraint graphs and their unsatisfiability value #
A constraint graph Dinur, Section 2.1 over an alphabet α is a multigraph with
finitely many edges, each of which carries a binary constraint on the labels of its two ends. A
labelling σ : V → α of the vertices violates the edges whose constraints its labels fail, and the
unsatisfiability value unsatVal is the least fraction of edges that a labelling violates. It
vanishes exactly on the satisfiable constraint graphs, and Dinur's proof of the PCP theorem
amplifies it: every step of the proof is a transformation of constraint graphs that keeps
satisfiable graphs satisfiable and multiplies the value of unsatisfiable ones by at least a constant
factor.
Vertices and edges are types rather than numbers: the constructions of the proof (degree
reduction, expanderization, powering) produce vertices and edges that are pairs, sums or tuples of
those of their inputs. Edges are indexed, so parallel edges and self-loops are allowed, and
directed, from src e to dst e, so that a constraint need not be symmetric; an undirected edge is
modelled by its two orientations when the construction needs it. The fractions are taken over the
edges only, so the vertex type need not be finite. A constraint graph without edges has value zero,
as is right: it is satisfied by every labelling.
Main definitions #
Cslib.PCP.ConstraintGraph: a multigraph with a binary constraint on each edge.Cslib.PCP.ConstraintGraph.Satisfies,Cslib.PCP.ConstraintGraph.Satisfiable.Cslib.PCP.ConstraintGraph.unsatEdges,Cslib.PCP.ConstraintGraph.unsatFrac: the edges a labelling violates, and their proportion.Cslib.PCP.ConstraintGraph.unsatVal: the least proportion of violated edges.Cslib.PCP.ConstraintGraph.map: the vertices renamed, for instance to add isolated vertices.Cslib.PCP.ConstraintGraph.comap: the edges pulled back along a map, for instance renamed.Cslib.PCP.ConstraintGraph.reindex: the vertices and the edges renamed along equivalences.Cslib.PCP.ConstraintGraph.union: two constraint graphs on the same vertices, superposed.
Main results #
Cslib.PCP.ConstraintGraph.expect_mem_unsatEdges: the proportion of violated edges is the probability that a uniformly random edge is violated.Cslib.PCP.ConstraintGraph.exists_unsatFrac_eq_unsatVal: the minimum is attained.Cslib.PCP.ConstraintGraph.unsatVal_eq_zero_iff: the value vanishes exactly on satisfiable constraint graphs.Cslib.PCP.ConstraintGraph.inv_card_le_unsatVal,Cslib.PCP.ConstraintGraph.one_le_card_mul_unsatVal: an unsatisfiable constraint graph has value at least one edge's worth.Cslib.PCP.ConstraintGraph.unsatVal_map: renaming the vertices injectively preserves the value.Cslib.PCP.ConstraintGraph.satisfiable_comap_iff,Cslib.PCP.ConstraintGraph.unsatVal_comap_equiv: pulling back along a surjection preserves satisfiability, and along an equivalence the value.Cslib.PCP.ConstraintGraph.satisfiable_reindex_iff,Cslib.PCP.ConstraintGraph.unsatVal_reindex: renaming the vertices and the edges preserves satisfiability and the value.Cslib.PCP.ConstraintGraph.card_mul_unsatVal_add_le,Cslib.PCP.ConstraintGraph.card_mul_unsatVal_le_union: adding edges can only increase the number of edges violated by the best labelling.Cslib.PCP.ConstraintGraph.unsatVal_union_of_forall_rel: adding edges whose constraints always hold scales the value by the proportion of the original edges.
References #
A constraint graph Dinur, Section 2.1 on the vertices V, with edges indexed
by E, over the alphabet α: each edge e goes from src e to dst e and carries a binary
constraint rel e on the labels of its ends. Parallel edges and self-loops are allowed.
- src : E → V
The first end of an edge.
- dst : E → V
The second end of an edge.
- rel : E → α → α → Prop
The constraint on an edge: a relation between the labels of its first and second ends.
Instances For
The labelling σ satisfies the edge e when the labels of its ends satisfy its constraint.
Instances For
A constraint graph is satisfiable when some labelling satisfies all of its edges.
Instances For
The edges that the labelling σ violates.
Instances For
A labelling violates no edge exactly when it satisfies all of them.
A labelling violates at most all the edges.
The proportion of the edges that the labelling σ violates, UNSAT_σ(G) in
Dinur, Section 2.1. It is zero when there are no edges.
Instances For
The number of violated edges is the proportion of violated edges times the number of edges.
The proportion of violated edges is nonnegative.
The proportion of violated edges is at most one.
The proportion of the edges that a labelling violates is the average of the indicator of the violated edges: the probability that it violates a uniformly random edge.
The unsatisfiability value UNSAT(G) Dinur, Section 2.1: the least
proportion of the edges that a labelling violates. The minimum is attained when α is nonempty
(exists_unsatFrac_eq_unsatVal); when there is no labelling at all, the value is zero by
convention.
Instances For
The proportions of violated edges are bounded below, by zero.
The value is at most the proportion of the edges that any labelling violates.
The value is nonnegative.
The value is at most one.
A constraint graph without edges has value zero.
The proportion of violated edges takes finitely many values, multiples of 1 / |E|.
The minimum is attained: some labelling violates exactly the proportion unsatVal of the
edges.
A lower bound on the value is a lower bound on the proportion of the edges violated by every labelling.
An upper bound on the value is an upper bound on the proportion of the edges violated by some labelling.
The value vanishes exactly on satisfiable constraint graphs.
The value is positive exactly on unsatisfiable constraint graphs.
An unsatisfiable constraint graph has value at least 1 / |E|: every labelling violates at
least one edge.
An unsatisfiable constraint graph violates at least one edge at its minimum-value labelling.
The constraint graph G with its vertices renamed along f : V → W: the same edges and
constraints, between the images of their ends. The vertices outside the range of f are
isolated.
Instances For
A labelling satisfies an edge of G.map f when its composite with f satisfies it in G.
Renaming the vertices injectively preserves satisfiability.
A labelling violates the edges of G.map f that its composite with f violates in G.
A labelling violates the same proportion of the edges of G.map f as its composite with f
does of the edges of G.
Renaming the vertices can only increase the value: the labellings of the renamed constraint graph give labellings of the original one.
Renaming the vertices injectively preserves the value: for instance, adding isolated vertices does not change it.
The constraint graph G pulled back along a map g : F → E of edges: its edge f is a
copy of the edge g f of G, with the same ends and the same constraint. Renaming the edges along
an equivalence, repeating them or keeping only some of them are pullbacks.
Instances For
A labelling satisfies an edge of G.comap g when it satisfies its image in G.
Pulling back along the identity does nothing.
A labelling satisfying G satisfies its pullbacks.
Pulling back along a surjective map of edges preserves satisfiability.
A labelling violates the edges of G.comap g whose images it violates in G.
Renaming the edges along an equivalence renames the violated edges.
Renaming the edges along an equivalence preserves the number of violated edges.
Renaming the edges along an equivalence preserves the proportion of violated edges.
The constraint graph G with its vertices and its edges renamed along equivalences: for
instance numbered by Fin (Fintype.equivFin).
Instances For
A labelling satisfies an edge of the renamed constraint graph when its composite with the
renaming of the vertices satisfies the corresponding edge of G.
Renaming the vertices and the edges preserves satisfiability.
The union of two constraint graphs on the same vertices: its edges are those of G,
labelled by Sum.inl, and those of H, labelled by Sum.inr, with their constraints.
Instances For
The union is satisfied by the labellings that satisfy both constraint graphs.
A labelling violates the edges of the union that it violates in either constraint graph.
The proportion of the edges of the union that a labelling violates is the average of those in the two constraint graphs, weighted by their numbers of edges.
The value of a union: the best labelling of the union violates at least as many edges as the best labellings of the two constraint graphs together.
Adding edges to a constraint graph can only increase the number of edges violated by the best labelling.
Adding edges whose constraints always hold scales the proportion of violated edges by the proportion of the original edges.
Adding edges whose constraints always hold scales the value by the proportion of the original edges.