Variable renaming and satisfiability transport #
Renaming the variables of a CNF along an injective map preserves
satisfiability. This justifies re-indexing the Cook–Levin tableau variables
from the Nat.pair-based scheme (convenient for injectivity bookkeeping in
the correctness proof) to a flat mixed-radix scheme computable by a Turing
machine with unary multiplication and addition only — the form the reduction
machine actually emits (docs/A5-ReductionEmitter.md).
Main definitions #
SAT.Lit.mapVar,SAT.Clause.mapVar,SAT.CNF.mapVar— variable renaming
Main results #
SAT.CNF.eval_mapVar_eq— evaluation commutes with renaming, given pointwise-agreeing assignments on the occurring variablesSAT.CNF.satisfiable_mapVar_iff— renaming along an injective map preserves satisfiability
Rename every variable of a clause along f.
Equations
Instances For
Rename every variable of a CNF along f.
Equations
Instances For
Out-of-range variables read false.
Tabulate the first M values of a Boolean function as an assignment.
Equations
- Complexity.SAT.Assignment.ofFn M g = List.map g (List.range M)
Instances For
The tabulated assignment Assignment.ofFn M g has length M.
Reading Assignment.ofFn M g at an in-range variable v < M returns g v.
Renaming preserves satisfiability, forward direction: push the satisfying assignment along the (injective) renaming.
Renaming reflects satisfiability, backward direction: pull the satisfying assignment back through the renaming (no injectivity needed).
Satisfiability is invariant under injective variable renaming.