Lecture Levine and Stuart
Lecture Levine and Stuart
1
2 3
Syntaxland Semanticsland
Examples
Propositional logic
Syntax: P (Q R); X1 (Raining Sunny)
Possible world: {P=true,Q=true,R=false,S=true} or 1101
Semantics: is true in a world iff is true and is true (etc.)
First-order logic
Syntax: x y P(x,y) Q(Joe,f(x)) f(x)=f(y)
Possible world: Objects o1, o2, o3; P holds for <o1,o2>; Q holds for < o1, o3>;
f(o1)=o1; Joe=o3; etc.
Semantics: () is true in a world if =oj and holds for oj; etc.
Inference: entailment
Entailment: |= (“ entails ” or “ follows from ”) iff in
every world where is true, is also true
I.e., the -worlds are a subset of the -worlds [models() models()]
In the example, 2 |= 1
(Say 2 is Q R S W
1 is Q )
1
2
Inference: proofs
A proof is a demonstration of entailment between and
Method 1: model-checking
For every possible world, if is true make sure that is true too
OK for propositional logic (finitely many worlds); not easy for first-order logic
Method 2: theorem-proving
Search for a sequence of proof steps (applications of inference rules) leading
from to
E.g., from P (P Q), infer Q by Modus Ponens
Sound algorithm: everything it claims to prove is in fact entailed
Complete algorithm: every that is entailed can be proved
Quiz
What’s the connection between complete inference algorithms and
complete search algorithms?
Answer 1: they both have the words “complete…algorithm”
Answer 2: they both solve any solvable problem
Answer 3: Formulate inference as a search problem
Initial state: KB contains
Actions: apply any inference rule that matches KB, add conclusion
Goal test: KB contains
Hence any complete search algorithm (BFS, IDS, …) yields a complete inference
algorithm…
provided the inference rules themselves are strong enough
Propositional logic syntax: The gruesome details
Given: a set of proposition symbols {X1,X2,…, Xn}
(we often add True and False for convenience)
Xi is a sentence
If is a sentence then is a sentence
If and are sentences then is a sentence
If and are sentences then is a sentence
If and are sentences then is a sentence
If and are sentences then is a sentence
And p.s. there are no other sentences!
Propositional logic semantics: The unvarnished truth
function PL-TRUE?(,model) returns true or false
if is a symbol then return Lookup(, model)
if Op() = then return not(PL-TRUE?(Arg1(),model))
if Op() = then return and(PL-TRUE?(Arg1(),model),
PL-TRUE?(Arg2(),model))
if Op() = then return or(PL-TRUE?(Arg1(),model),
not(PL-TRUE?(Arg2(),model)))
etc. (Sometimes called “recursion over syntax”)
PacMan facts
If Pacman is at 3,3 at time 16 and goes North and there is no wall
at 3,4 then Pacman is at 3,4 at time 17:
At_3,3_16 N_16 Wall_3,4 At_3,3_17
At time 0 Pacman does one of four actions:
(W_0 v E_0 v N_0 v S_0)
(W_0 E_0) (W_0 S_0) …
Simple theorem proving: Forward chaining
Forward chaining applies Modus Ponens to generate new facts:
Given X1 X2 … Xn Y and X1, X2, …, Xn
Infer Y
Forward chaining keeps applying this rule, adding new facts, until
nothing more can be added
Requires KB to contain only definite clauses:
(Conjunction of symbols) symbol; or
A single symbol (note that X is equivalent to True X)
Forward chaining algorithm
function PL-FC-ENTAILS?(KB, q) returns true or false
count ← a table, where count[c] is the number of symbols in c’s premise
inferred ← a table, where inferred[s] is initially false for all s
agenda ← a queue of symbols, initially symbols known to be true in KB
while agenda is not empty do
p ← Pop(agenda)
if p = q then return true
if inferred[p] = false then
inferred[p]←true
for each clause c in KB where p is in c.premise do
decrement count[c]
if count[c] = 0 then add c.conclusion to agenda
return false
Forward chaining example: Proving Q
CLAUSES COUNT INFERRED
PQ 1// 0 A false
xxxx true
LMP 2 1// 0
// B false
xxxx true
BLM 2// 1// 0 L false
xxxx true
APL 2// 1// 0 M false
xxxx true
ABL 2// 1// 0 P false
xxxx true
A 0 Q xxxx
false true
B 0
AGENDA
A
x B x P
x xL M x Q
x L x
Properties of forward chaining
Theorem: FC is sound and complete for definite-clause KBs
Soundness: follows from soundness of Modus Ponens (easy to check)
Completeness proof:
1. FC reaches a fixed point where no new atomic sentences are derived
2. Consider the final inferred table as a model m, assigning true/false to symbols
3. Every clause in the original KB is true in m A xxxx
false true
Proof: Suppose a clause a1... ak b is false in m B xxxx
false true
Then a1... ak is true in m and b is false in m L xxxx
false true
M xxxx
false true
Therefore the algorithm has not reached a fixed point!
P xxxx
false true
4. Hence m is a model of KB Q xxxx
false true
5. If KB |= q, q is true in every model of KB, including m
Simple model checking
function TT-ENTAILS?(KB, α) returns true or false
return TT-CHECK-ALL(KB,α,symbols(KB) U symbols(α),{})
function TT-CHECK-ALL(KB,α,symbols,model) returns true or false
if empty?(symbols) then
if PL-TRUE?(KB,model) then return PL-TRUE?(α,model)
else return true
else
P ← first(symbols)
rest ← rest(symbols)
return and (TT-CHECK-ALL(KB,α,rest,model ∪ {P = true})
TT-CHECK-ALL(KB,α,rest,model ∪ {P = false }))
Simple model checking, contd.
Same recursion as backtracking P1=true P1=false
Pn=true Pn=false
KB?
α?
11111…1
0000…0
Satisfiability and entailment
A sentence is satisfiable if it is true in at least one world (cf CSPs!)
Suppose we have a hyper-efficient SAT solver; how can we use it to
test entailment?
Suppose |=
Then is true in all worlds
Hence ( ) is false in all worlds
Hence is false in all worlds, i.e., unsatisfiable
So, add the negated conclusion to what you know, test for
(un)satisfiability; also known as reductio ad absurdum
Efficient SAT solvers operate on conjunctive normal form
Conjunctive normal form (CNF)
Replace biconditional by two implications
Every sentence can be expressed as a conjunction of clauses
Each clause is a disjunction of literals
Replace by v