4
Prime Implicants and Implicates Prime implicant α of a formula φ is a conjunction of literals s.t. α |= φ, but deprived of a literal α |≠ φ. – Prime implicate β of a formula φ is a clause s.t. φ |= β and there is no other implicate β’ s.t. β’ |= β. – Thm: Prop. formulae are equivalent iff they have the same set of prime implicates/implicants.

5
Prime Implicants and Implicates: Motivation Represent φ by disjunction of all its prime implicants (or conjunction of all prime implicates) –Define simplifying φ as finding the simplest equivalent in some unique normal form. Inference from primes is simple Reduce prop. formula φ to simplest equivalent. –Many applications: digital circuits, knowledge state However, we may not need all prime implicants. –

6
Prime Implicants and Implicates: Computational Objective Generate the set of all prime implicates/implicants of φ. –Known to be NP-complete, but we can do much better than brute force. If φ if redundant - get rid of unnecessary prime implicates/implicants.

7
Consequence Finding: Motivation and Objective Given a knowledge base Δ, derive a set of formulas logically implied by Δ. May want to derive some subset of the set of all implicates of Δ. –Provide restrictions to guide the search. Such task is called consequence finding.

13
Theoretical Properties Thm (why?): –W(S) is the set of prime implicants of S A symmetric algorithm can be used to obtain prime implicates if φ is in DNF (A)A –We don’t need that, though… (why?) May still be interested in finding the minimal sum. –Can use the algorithm again…

15
Approach II: Prime Implicates via Resolution Brute force attempt: Start with Δ in clausal form. Repeatedly resolve pairs of clauses of Δ. –Add the result of resolution back to Δ, while removing all subsumed clauses.

16
Improving Efficiency: Tison’s Method (order propositions) Many redundant resolutions. –E.g. for 3 resolvable clauses α, β, γ there are 3 ways to resolve r(α, r(β, γ)), r(r(α, β), γ), and r(r(α, γ), β). –Number of ways to derive result grows quickly. Key idea [Tison]: place ordering on symbols, and iterate over these symbols in order. –Once all resolutions for a symbol are done, it is never necessary to resolve with respect to that symbol even for new resolution results produced later.

18
Algorithm Details S is the current set of clauses, and N is the current set of prime implicates. Gist: Pick one clause (C) at a time from S, and for every literal in C (in order) resolve with N. Add new clauses to N. S N

20
Algorithm Details: Iteration 2 S N Σ For each literal x in C: Resolve each clause in Σ (which is still in N) with each clause in N x (which is still in N). For every new clause, discard it if it is subsumed by N U S, or remove any clauses it subsumes from N U S. Add it to N and Σ.

21
Algorithm Details: Iteration 3 S N Σ For each literal x in C: Resolve each clause in Σ (which is still in N) with each clause in N x (which is still in N). For every new clause, discard it if it is subsumed by N U S, or remove any clauses it subsumes from N U S. Add it to N and Σ. Considers literals in order avoiding many redundant resolution steps

22
Subsumption This algorithm (and many others) uses subsumption checking heavily. For clauses subsumption check is a subset check. –e.g. a+b subsumes a+b+c However, de Kleer can do better.

23
Subsumption For our algorithm, we are interested in three operations: 1.Check if clause x is subsumed by some clause in the Δ. 2.Add clause x to the Δ. 3.Remove all clauses from Δ which are subsumed by x.

32
Limited Languages (del Val 1999) A clausal knowledge base Δ is written over some clausal language L. We may be interested in all implicates of Δ or only those that belong to some L T  L (L T implicates). Consequence finding is the task of finding L T implicates.

35
Search Strategy: Incremental Saturation Idea: take one clause at a time, process it until no more unsubsumed L T – acceptable resolvents can be generated. Two sets of buckets: active and passive. –Put Δ into passive buckets. –For each clause of Δ Put in active buckets, use BE (over active/passive) When done, dump active buckets into passive.