Executable constraint graphs for 3-SAT #
First-occurrence renaming bounds every variable index by the number of literal occurrences.
Variable vertices use even numbers and clause vertices use odd numbers. Each clause contributes
three ordered edges, including the self-loops for missing literal positions. Constraints are
complete Boolean tables on the eight-symbol alphabet Fin 3 → Bool.
Main definitions #
Cslib.PCP.Encoded.Graph.ofCNF: construct a graph from a compactly numbered formula.Cslib.PCP.Encoded.Graph.ofCompactCNF: compact arbitrary variable names and construct the graph.
Main results #
Cslib.PCP.Encoded.Graph.isPolyTime_ofCompactCNF: charge renaming, enumeration, and truth tables.
References #
Check the first three literal positions against a clause label.
Instances For
Construct three edges per clause. variableCount bounds compact variable names;
it is used only for the declared vertex count, and correctness does not inspect a bound proof.
Instances For
Compact the original variable names before producing unary graph indices.
Instances For
Checking a clause label includes lookup of the literals at its three positions.
The per-edge program charges clause lookup, endpoints, and all 64 entries of its relation.
Constructing all edges and copying their constraints is polynomial-time.
The complete construction accepts any variable encoding and charges compact renaming.
The numbering separates all variable vertices and clause vertices.
Every clause contributes exactly three edges, including missing-position self-loops.
The concrete edge occurrences are indexed by clause and literal position.
Instances For
The executable graph is exactly the existing mathematical graph with concrete numbering.
The exact graph interpretation retains the mathematical unsatisfied value.
For clauses of length at most three, the executable construction preserves satisfiability.
The complete construction always produces well-formed numbered graphs.
There are two declared vertex slots per literal occurrence or clause position.
Compaction does not change the three edges contributed by each original clause.
The full construction accepts exactly the satisfiable formulas with at most three literals per clause, including repeated variables and missing literal positions.
An unsatisfiable input supplies the inverse-polynomial starting gap for amplification.