Documentation

Complexity.Computability.Complexity.Problems.USAT

Unique satisfiability #

A formula in conjunctive normal form is uniquely satisfiable when it has exactly one satisfying assignment of its variables. Formulas here have variables numbered by ℕ, and an assignment ℕ → Bool also gives values to the infinitely many variables that do not occur; so USAT asks for a satisfying assignment with which every satisfying assignment agrees on the variables of the formula (Cslib.Logic.PL.CNF.vars).

Valiant and Vazirani consider the promise problem PromiseUSAT whose yes-instances are the uniquely satisfiable formulas and whose no-instances are the unsatisfiable ones Valiant and Vazirani, Arora and Barak, Section 17.4. Formulas with two or more satisfying assignments are outside the promise, so a function solves PromiseUSAT when the set it accepts lies between USAT and SAT (solvedBy_PromiseUSAT_iff); deciding either USAT or SAT does (solvedBy_USAT, solvedBy_SAT). PromiseUSAT lies in PromiseNP, separated by SAT (PromiseUSAT_mem_PromiseNP).

Main definitions #

Main results #

References #

The uniquely satisfiable formulas: some assignment satisfies the formula, and every satisfying assignment agrees with it on every variable of the formula Blass and Gurevich.

Instances For
    theorem Cslib.Complexity.mem_USAT {φ : Logic.PL.CNF ℕ} :
    φ ∈ USAT ↔ ∃ (σ : ℕ → Bool), Logic.PL.CNF.eval σ φ = true ∧ ∀ (τ : ℕ → Bool), Logic.PL.CNF.eval τ φ = true → ∀ v ∈ φ.vars, τ v = σ v

    A uniquely satisfiable formula is satisfiable.

    No uniquely satisfiable formula is unsatisfiable.

    Unique satisfiability as a promise problem: the yes-instances are the uniquely satisfiable formulas, the no-instances the unsatisfiable ones, and formulas with at least two satisfying assignments are outside the promise.

    Instances For

      A function solves PromiseUSAT exactly when the set it accepts lies between USAT and SAT.

      Deciding SAT also solves PromiseUSAT: its answers on formulas outside the promise are irrelevant.