Evaluating a formula restricted by a partial assignment #
The restriction φ.restrictBy ρ of a CNF formula by a partial assignment ρ
(Cslib.Logic.PL.CNF.restrictBy) drops the clauses that ρ satisfies and removes the literals of
the variables that ρ fixes from the others. This file relates it to φ under the total
assignments that extend ρ.
Main results #
Cslib.Logic.PL.CNF.eval_restrictBy: under an assignment that extendsρ, the restricted formula has the value ofφ.Cslib.Logic.PL.CNF.length_le_of_mem_restrictBy: restriction does not widen clauses.Cslib.Logic.PL.CNF.exists_preimage_restrictBy: a list of clauses of the restricted formula comes, clause by clause, from a list of clauses ofφwith the same value under every extension ofρ.
theorem Cslib.Logic.PL.Clause.eval_filter_of_extends {V : Type u_1} {ρ : V → Option Bool} {γ : V → Bool} (hγ : ∀ (v : V) (b : Bool), ρ v = some b → γ v = b) {d : Clause V} (hd : ∀ l ∈ d, ρ l.1 ≠ some l.2) :
Under an assignment that extends ρ, a clause that ρ does not satisfy has the value of its
literals on the variables that ρ does not fix.
theorem Cslib.Logic.PL.CNF.length_le_of_mem_restrictBy {V : Type u_1} {φ : CNF V} {ρ : V → Option Bool} {k : ℕ} (hlen : ∀ c ∈ φ, List.length c ≤ k) (c : Clause V) :
c ∈ φ.restrictBy ρ → List.length c ≤ k
Restriction does not widen clauses.