Total-function semantics for Tseitin splitting #
The public SAT semantics use finite Boolean lists, with out-of-range variables
defaulting to false. Fresh-variable arguments are simpler with total assignments
ℕ → Bool, since a fresh variable can be set with Function.update without changing
any earlier variable.
This internal module defines total-assignment evaluation for literals, clauses, and CNFs. It relates that evaluation to the existing list semantics, proves the two satisfiability notions equivalent, and records the congruence and update lemmas used by the recursive Tseitin correctness proof.
A total Boolean assignment, used internally while choosing fresh variables.
Equations
Instances For
Evaluate a literal under a total assignment.
Equations
- Complexity.SAT.Lit.evalTotal α ℓ = (α ℓ.var == ℓ.sign)
Instances For
Total evaluation through the Assignment.get view of a finite assignment agrees
with the public list semantics.
Negating a literal complements its value under a total assignment.
A positive literal evaluates to the value of its variable.
A negative literal evaluates to the complement of its variable.
A literal has the same value under assignments that agree at its variable.
Evaluate a clause under a total assignment.
Equations
Instances For
Total evaluation through the Assignment.get view of a finite assignment agrees
with the public list semantics.
Clause evaluation is invariant when assignments agree on every occurring variable.
Evaluate a CNF under a total assignment.
Equations
Instances For
A CNF is satisfiable by a total Boolean assignment.
Equations
Instances For
Total evaluation through the Assignment.get view of a finite assignment agrees
with the public list semantics.
CNF evaluation is invariant when assignments agree on every occurring variable.
Updating a total assignment sets the selected variable to the new value.
Updating one variable leaves every distinct variable unchanged.
Updating a total assignment at fresh leaves every smaller variable unchanged.
Updating a later variable preserves a literal's value.
Updating a variable above a clause's maximum variable preserves its value.
Updating a variable above a CNF's maximum variable preserves its value.
List satisfiability is equivalent to satisfiability by a total Boolean function.