IA008: Computational Logic 1. Propositional Logic Achim Blumensath blumens@fi.muni.cz Faculty of Informatics, Masaryk University, Brno Basic Concepts Propositional Logic Syntax ▸ Variables A,B,C,...,X,Y,Z,... ▸ Operators ∧,∨,¬,→,↔ Semantics J ⊧ φ J Variables → {true,false} Examples φ = A ∧ (A → B) → B, ψ = ¬(A ∧ B) ↔ (¬A ∨ ¬B) . Terminology ▸ entailment φ ⊧ ψ (do not confuse with J ⊧ φ!) ▸ equivalence φ ≡ ψ (do not confuse with φ = ψ!) ▸ φ ≡ ψ iff φ ⊧ ψ and ψ ⊧ φ Terminology ▸ entailment φ ⊧ ψ (do not confuse with J ⊧ φ!) ▸ equivalence φ ≡ ψ (do not confuse with φ = ψ!) ▸ φ ≡ ψ iff φ ⊧ ψ and ψ ⊧ φ ▸ satisfiability φ ≢ false ▸ validity φ ≡ true ▸ Every valid formula is satisfiable. ▸ φ is valid iff ¬φ is not satisfiable. ▸ φ ⊧ ψ iff φ → ψ is valid. Examples ▸ A ∧ (A → B) → B is Terminology ▸ entailment φ ⊧ ψ (do not confuse with J ⊧ φ!) ▸ equivalence φ ≡ ψ (do not confuse with φ = ψ!) ▸ φ ≡ ψ iff φ ⊧ ψ and ψ ⊧ φ ▸ satisfiability φ ≢ false ▸ validity φ ≡ true ▸ Every valid formula is satisfiable. ▸ φ is valid iff ¬φ is not satisfiable. ▸ φ ⊧ ψ iff φ → ψ is valid. Examples ▸ A ∧ (A → B) → B is valid. ▸ A ∨ B is Terminology ▸ entailment φ ⊧ ψ (do not confuse with J ⊧ φ!) ▸ equivalence φ ≡ ψ (do not confuse with φ = ψ!) ▸ φ ≡ ψ iff φ ⊧ ψ and ψ ⊧ φ ▸ satisfiability φ ≢ false ▸ validity φ ≡ true ▸ Every valid formula is satisfiable. ▸ φ is valid iff ¬φ is not satisfiable. ▸ φ ⊧ ψ iff φ → ψ is valid. Examples ▸ A ∧ (A → B) → B is valid. ▸ A ∨ B is satisfiable but not valid. ▸ ¬A ∧ A is Terminology ▸ entailment φ ⊧ ψ (do not confuse with J ⊧ φ!) ▸ equivalence φ ≡ ψ (do not confuse with φ = ψ!) ▸ φ ≡ ψ iff φ ⊧ ψ and ψ ⊧ φ ▸ satisfiability φ ≢ false ▸ validity φ ≡ true ▸ Every valid formula is satisfiable. ▸ φ is valid iff ¬φ is not satisfiable. ▸ φ ⊧ ψ iff φ → ψ is valid. Examples ▸ A ∧ (A → B) → B is valid. ▸ A ∨ B is satisfiable but not valid. ▸ ¬A ∧ A is not satisfiable. Equivalence Transformations De Morgan’s laws ¬(φ ∧ ψ) ≡ ¬φ ∨ ¬ψ ¬(φ ∨ ψ) ≡ ¬φ ∧ ¬ψ Equivalence Transformations De Morgan’s laws ¬(φ ∧ ψ) ≡ ¬φ ∨ ¬ψ ¬(φ ∨ ψ) ≡ ¬φ ∧ ¬ψ Distributive laws φ ∧ (ψ ∨ θ) ≡ (φ ∧ ψ) ∨ (φ ∧ θ) φ ∨ (ψ ∧ θ) ≡ (φ ∨ ψ) ∧ (φ ∨ θ) Normal Forms Conjunctive Normal Form (CNF) (A ∨ ¬B) ∧ (¬A ∨ C) ∧ (A ∨ ¬B ∨ ¬C) Disjunctive Normal Form (DNF) (A ∧ C) ∨ (¬A ∧ ¬B) ∨ (A ∧ ¬B ∧ ¬C) Clauses Definitions ▸ literal A or ¬A ▸ clause set of literals {A,B,¬C} short-hand for disjunction A ∨ B ∨ ¬C Clauses Definitions ▸ literal A or ¬A ▸ clause set of literals {A,B,¬C} short-hand for disjunction A ∨ B ∨ ¬C Example CNF φ = (A ∨ ¬B ∨ C) ∧ (¬A ∨ C) ∧ B clauses {A,¬B,C}, {¬A,C}, {B} Clauses Definitions ▸ literal A or ¬A ▸ clause set of literals {A,B,¬C} short-hand for disjunction A ∨ B ∨ ¬C Example CNF φ = (A ∨ ¬B ∨ C) ∧ (¬A ∨ C) ∧ B clauses {A,¬B,C}, {¬A,C}, {B} Notation Φ[L = true] = { C ∖ {¬L} C ∈ Φ, L ∉ C } . 吀he Satisfiability Problem Davis-Putnam-Logemann-Loveland (DPLL) Algorithm Input: a set of clauses Φ Output: true if Φ is satisfiable, false otherwise. DPLL(Φ) for every singleton {L} in Φ (* simplify Φ *) Φ = Φ[L = true] for every literal L whose negation does not occur in Φ Φ = Φ[L = true] if Φ contains the empty clause then (* are we done? *) return false if Φ is empty then return true choose some literal L in Φ (* try L = true and L = false *) if DPLL(Φ[L = true]) then return true else return DPLL(Φ[L = false]) Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true {¬B,C,D}, {¬B,¬D}, {B,C,D}, {¬B,¬C}, {¬C,¬D} Step 2: B = true Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true {¬B,C,D}, {¬B,¬D}, {B,C,D}, {¬B,¬C}, {¬C,¬D} Step 2: B = true {C,D}, {¬D}, {¬C}, {¬C,¬D} Step 3: C = false and D = false Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true {¬B,C,D}, {¬B,¬D}, {B,C,D}, {¬B,¬C}, {¬C,¬D} Step 2: B = true {C,D}, {¬D}, {¬C}, {¬C,¬D} Step 3: C = false and D = false {D}, {¬D} Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true {¬B,C,D}, {¬B,¬D}, {B,C,D}, {¬B,¬C}, {¬C,¬D} Step 2: B = true {C,D}, {¬D}, {¬C}, {¬C,¬D} Step 3: C = false and D = false {D}, {¬D} ∅ failure Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true {¬B,C,D}, {¬B,¬D}, {B,C,D}, {¬B,¬C}, {¬C,¬D} Backtrack to step 2: B = false Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true {¬B,C,D}, {¬B,¬D}, {B,C,D}, {¬B,¬C}, {¬C,¬D} Backtrack to step 2: B = false {C,D}, {¬C,¬D} Step 3: C = true Example Φ = {{A,B,¬C}, {¬B,C,D}, {¬A,¬B,¬D}, {B,C,D}, {¬A,¬B,¬C}, {¬A,¬C,¬D}} Step 1: A = true {¬B,C,D}, {¬B,¬D}, {B,C,D}, {¬B,¬C}, {¬C,¬D} Backtrack to step 2: B = false {C,D}, {¬C,¬D} Step 3: C = true {¬D} satisfiable Solution: A = true, B = false, C = true, D = false Expressing graph problems Vertex cover Variables: Cv vertex v belongs to the cover Expressing graph problems Vertex cover Variables: Cv vertex v belongs to the cover Formulae: Cu ∨ Cv for every edge ⟨u,v⟩ ∈ E Size≤ k “At most k of the Cv are true.” Expressing graph problems Vertex cover Variables: Cv vertex v belongs to the cover Formulae: Cu ∨ Cv for every edge ⟨u,v⟩ ∈ E Size≤ k “At most k of the Cv are true.” Clique Variables: Cv vertex v belongs to the clique Expressing graph problems Vertex cover Variables: Cv vertex v belongs to the cover Formulae: Cu ∨ Cv for every edge ⟨u,v⟩ ∈ E Size≤ k “At most k of the Cv are true.” Clique Variables: Cv vertex v belongs to the clique Formulae: ¬Cu∨¬Cv for every non-edge ⟨u,v⟩ ∉ E Size≥ k “At least k of the Cv are true.” Expressing graph problems 吀he Size≥ k formulae Fix an enumeration v0,...,vn−1 of V. Variables: Sk m at least k variables Cvi with i < m are true Expressing graph problems 吀he Size≥ k formulae Fix an enumeration v0,...,vn−1 of V. Variables: Sk m at least k variables Cvi with i < m are true Formulae: S0 m ¬Sk 0 for k > 0 Cvi → [Sk i ↔ Sk+1 i+1 ] ¬Cvi → [Sk i ↔ Sk i+1] Sk n Expressing graph problems 吀he Size≥ k formulae Fix an enumeration v0,...,vn−1 of V. Variables: Sk m at least k variables Cvi with i < m are true Formulae: S0 m ¬Sk 0 for k > 0 Cvi → [Sk i ↔ Sk+1 i+1 ] ¬Cvi → [Sk i ↔ Sk i+1] Sk n v0 v1 v2 Cvi 1 0 1 S0 i 1 1 1 1 S1 i 0 1 1 1 S2 i 0 0 0 1 S3 i 0 0 0 0 Expressing graph problems 吀he Size≥ k formulae Fix an enumeration v0,...,vn−1 of V. Variables: Sk m at least k variables Cvi with i < m are true Formulae: S0 m ¬Sk 0 for k > 0 Cvi → [Sk i ↔ Sk+1 i+1 ] ¬Cvi → [Sk i ↔ Sk i+1] Sk n v0 v1 v2 Cvi 1 0 1 S0 i 1 1 1 1 S1 i 0 1 1 1 S2 i 0 0 0 1 S3 i 0 0 0 0 A similar construction works for Size≤ k. 吀he Satisfiability Problem 吀heorem 3-SAT (satisfiability for formulae in 3-CNF) is NP-complete. 吀he Satisfiability Problem 吀heorem 3-SAT (satisfiability for formulae in 3-CNF) is NP-complete. Proof Given Turing machine M and input w, construct formula φ such that M accepts w iff φ is satisfiable. Proof Turing machine M = ⟨Q,Σ,Δ,q0,F+,F−⟩ Q set of states Σ tape alphabet Δ set of transitions ⟨p,a,b,m,q⟩ ∈ Q × Σ × Σ × {−1,0,1} × Q q0 initial state F+ accepting states F− rejecting states nondeterministic, runtime bounded by the polynomial r(n) Proof Turing machine M = ⟨Q,Σ,Δ,q0,F+,F−⟩ Q set of states Σ tape alphabet Δ set of transitions ⟨p,a,b,m,q⟩ ∈ Q × Σ × Σ × {−1,0,1} × Q q0 initial state F+ accepting states F− rejecting states nondeterministic, runtime bounded by the polynomial r(n) Encoding in PL St,q state q at time t Ht,k head in field k at time t Wt,k,a letter a in field k at time t φw = ⋀ t