Adding trivial edges to encoded constraint graphs #
Adding universally accepting constraints is a step of Dinur's preprocessing. These programs append supplied edges or construct a loop at every vertex. Their interpretation is exactly the existing union of constraint graphs, with its proved satisfiability and value laws.
Main definitions #
Cslib.PCP.Encoded.Graph.addTrivial: append constraints at supplied endpoints.Cslib.PCP.Encoded.Graph.addLoops: append one self-loop per declared vertex.
Main results #
Cslib.PCP.Encoded.Graph.isPolyTime_addTrivial,Cslib.PCP.Encoded.Graph.isPolyTime_addLoops: uniform machine-backed certificates.Cslib.PCP.Encoded.Graph.satisfiable_addTrivial_iff,Cslib.PCP.Encoded.Graph.unsatVal_addTrivial: exact correctness of adding trivial edges.Cslib.PCP.Encoded.Graph.satisfiable_addLoops_iff,Cslib.PCP.Encoded.Graph.unsatVal_addLoops: exact correctness of adding self-loops.
References #
Add one edge with constraint truth from each declared vertex to itself.
Instances For
Appending explicitly listed trivial edges is uniformly polynomial-time in both lists.
Constructing all self-loops, including enumerating their endpoints, is polynomial-time.
Adding edges within the declared vertex set preserves well-formedness.
Self-loops stay in the declared vertex set, including when it is empty.
Appending universally accepting constraints scales the value by the fraction of original edges. This also covers empty input and output edge sets.