Documentation

CslibFrontier.Computability.Complexity.Problems.SAT.Planar.PairedCounting

Parsimony of the actual paired-port compiler #

For width-three inputs with at most three literal occurrences per variable, every satisfying source assignment has a satisfying output extension. Its values on the occurring output variables are uniquely determined by the source assignment. Conversely, reading the ordinary source cells recovers the source assignment. Counts use only occurring variables on both sides.

Main results #

References #

These are original counting and assignment-correspondence proofs for PairedCompile.

Every used source cell is retained and receives an ordinary ring.

Every used source representative is an occurring variable of the actual raw output.

theorem Cslib.Complexity.SAT.ParsimoniousPlanar.raw_assignments_agree {φ : Logic.PL.CNF ℕ} (hw : ∀ c ∈ φ, List.length c ≤ 3) (hv : ∀ (v : ℕ), List.count v φ.vars ≤ 3) {σ τ : Variable → Bool} (hσ : Logic.PL.CNF.eval σ (rawFormula φ) = true) (hτ : Logic.PL.CNF.eval τ (rawFormula φ) = true) (he : ∀ v ∈ φ.vars, sourceValue φ σ v = sourceValue φ τ v) (v : Variable) :
v ∈ (rawFormula φ).vars → σ v = τ v

Source agreement determines every occurring raw output variable. Assignments outside the formula's variable support are unrestricted.

theorem Cslib.Complexity.SAT.ParsimoniousPlanar.raw_assignments_agree_iff {φ : Logic.PL.CNF ℕ} (hw : ∀ c ∈ φ, List.length c ≤ 3) (hv : ∀ (v : ℕ), List.count v φ.vars ≤ 3) {σ τ : Variable → Bool} (hσ : Logic.PL.CNF.eval σ (rawFormula φ) = true) (hτ : Logic.PL.CNF.eval τ (rawFormula φ) = true) :
(∀ v ∈ (rawFormula φ).vars, σ v = τ v) ↔ ∀ v ∈ φ.vars, sourceValue φ σ v = sourceValue φ τ v

Among satisfying assignments, agreement on raw variables is equivalent to agreement on the occurring source variables read at their fixed source representatives.

theorem Cslib.Complexity.SAT.ParsimoniousPlanar.exists_satisfying_extension {φ : Logic.PL.CNF ℕ} (hw : ∀ c ∈ φ, List.length c ≤ 3) (hv : ∀ (v : ℕ), List.count v φ.vars ≤ 3) (τ : ℕ → Bool) (hτ : Logic.PL.CNF.eval τ φ = true) :
∃ (σ : Variable → Bool), Logic.PL.CNF.eval σ (rawFormula φ) = true ∧ ∀ v ∈ φ.vars, sourceValue φ σ v = τ v

Every satisfying source assignment extends to a satisfying raw output assignment with the same source values. Together with raw_assignments_agree_iff, its occurring values are unique.

The actual raw compiler preserves satisfying-assignment counts under the source width and literal-occurrence restrictions. Both sides count only occurring variables.

Compact natural-number labels preserve the raw compiler's exact model count.

The actual compact compiler preserves satisfiability under the source restrictions.