Executable constraint graphs #
An edge list gives concrete indices to vertices and edges while keeping constraints as data.
The interpretation uses an explicit Boolean evaluator; in particular, it does not decide an
arbitrary proposition-valued relation. A separate WellFormed predicate says that endpoints
are below the declared vertex count. None of the algorithms requires or computes that proof.
The natural-number interpretation is convenient for proving transformations correct. On
well-formed inputs its vertices are the images of Fin vertices, with all other vertices
isolated, and toFiniteGraph recovers the corresponding finite constraint graph.
Main definitions #
Cslib.PCP.Encoded.Edge,Cslib.PCP.Encoded.Graph: executable edge records and edge lists.Cslib.PCP.Encoded.Graph.toGraph,Cslib.PCP.Encoded.Graph.toFiniteGraph: interpretations.Cslib.PCP.Encoded.Graph.isWellFormed: an executable endpoint-bounds check.Cslib.PCP.Encoded.Graph.checkEdge: check a constraint against a list of vertex labels.
Main results #
Cslib.PCP.Encoded.Graph.checkEdge_eq_true_iff: exact agreement with graph satisfaction.Cslib.PCP.Encoded.Graph.satisfiable_toFiniteGraph_iff,Cslib.PCP.Encoded.Graph.unsatVal_toFiniteGraph: finite interpretations preserve the value.Cslib.PCP.Encoded.Graph.isPolyTime_checkEdge: a uniform machine-backed certificate, including edge lookup, label lookup and constraint evaluation.
References #
Instances For
Instances For
Reading an edge's first endpoint is polynomial-time.
Reading an edge's second endpoint is polynomial-time.
Reading an edge's constraint descriptor is polynomial-time.
Assemble computed endpoints and a computed constraint into an edge.
A finite graph represented by its vertex count and ordered list of edges. The ordering distinguishes parallel edges.
- vertices : ℕ
The number of vertices.
The ordered edges, including parallel edges and loops.
Instances For
Instances For
Instances For
Reading the declared vertex count is polynomial-time.
Reading the edge list is polynomial-time.
Assemble a computed vertex count and edge list into a graph.
All listed endpoints are among the declared vertices.
Instances For
Check the endpoint bounds by a scan through the edge records.
Instances For
The executable endpoint check is exact.
Checking all endpoint bounds is uniformly polynomial-time.
A computed graph determines the edge encoding before the index is checked.
Check a numbered edge against a list of labels. Both lookups are total, with explicit fallbacks; the correctness theorem applies to valid edge indices.
Instances For
Edge and label lookup, and the constraint evaluation, are all charged to the certificate.
Interpret the explicit edge list on natural-number vertices. Unlisted vertices are isolated.
Instances For
An occurrence enumeration and pointwise edge semantics identify the entire graph. No injectivity of the stored edge values is required, so loops and parallel edges are retained.
Interpret a well-formed edge list using exactly its declared finite vertex set.
Instances For
The natural-number interpretation only adds isolated vertices.
The finite and natural-number interpretations have the same satisfiability.
The finite and natural-number interpretations have the same unsatisfiability value.