1
|
|
2
|
- Why FOL?
- Syntax and semantics of FOL
- Using FOL
- Wumpus world in FOL
- Knowledge engineering in FOL
|
3
|
- J Propositional logic is declarative
- J Propositional logic
allows partial/disjunctive/negated information
- (unlike most data structures and databases)
- J Propositional logic is compositional:
- meaning of B1,1 Ù P1,2
is derived from meaning of B1,1 and of P1,2
- J Meaning in propositional
logic is context-independent
- (unlike natural language, where meaning depends on context)
- L Propositional logic has
very limited expressive power
- (unlike natural language)
- E.g., cannot say "pits cause breezes in adjacent squares“
- except by writing one sentence
for each square
|
4
|
- Whereas propositional logic assumes the world contains facts,
- first-order logic (like natural language) assumes the world contains
- Objects: people, houses, numbers, colors, baseball games, wars, …
- Relations: red, round, prime, brother of, bigger than, part of, comes
between, …
- Functions: father of, best friend, one more than, plus, …
|
5
|
- Constants KingJohn, 2, NUS,...
- Predicates Brother, >,...
- Functions Sqrt, LeftLegOf,...
- Variables x, y, a, b,...
- Connectives Ø, Þ, Ù, Ú, Û
- Equality =
- Quantifiers ", $
|
6
|
- Atomic sentence = predicate (term1,...,termn)
or term1 = term2
- Term = function (term1,...,termn)
or constant or variable
- E.g., Brother(KingJohn,RichardTheLionheart) >
(Length(LeftLegOf(Richard)), Length(LeftLegOf(KingJohn)))
|
7
|
- Complex sentences are made from atomic sentences using connectives
- ØS, S1 Ù S2, S1 Ú S2, S1 Þ S2, S1 Û S2,
- E.g. Sibling(KingJohn,Richard) Þ Sibling(Richard,KingJohn)
- >(1,2) Ú ≤ (1,2)
- >(1,2) Ù Ø >(1,2)
|
8
|
- Sentences are true with respect to a model and an interpretation
- Model contains objects (domain elements) and relations among them
- Interpretation specifies referents for
- constant symbols → objects
- predicate symbols → relations
- function symbols → functional relations
- An atomic sentence predicate(term1,...,termn) is
true
- iff the objects referred to by term1,...,termn
- are in the relation referred to by predicate
|
9
|
|
10
|
- "<variables> <sentence>
- Everyone at NUS is smart:
- "x At(x,NUS) Þ Smart(x)
- "x P is true in a model m
iff P is true with x being each possible object in the model
- Roughly speaking, equivalent to the conjunction of instantiations of P
- At(KingJohn,NUS) Þ Smart(KingJohn)
- Ù At(Richard,NUS) Þ
Smart(Richard)
- Ù At(NUS,NUS) Þ Smart(NUS)
- Ù ...
|
11
|
- Typically, Þ is the main
connective with "
- Common mistake: using Ù as the main connective with ":
- "x At(x,NUS) Ù Smart(x)
- means “Everyone is at NUS and everyone is smart”
|
12
|
- $<variables> <sentence>
- Someone at NUS is smart:
- $x At(x,NUS) Ù Smart(x)
- $x P is true in a model m iff P
is true with x being some possible object in the model
- Roughly speaking, equivalent to the disjunction of instantiations of P
- At(KingJohn,NUS) Ù
Smart(KingJohn)
- Ú At(Richard,NUS) Ù Smart(Richard)
- Ú At(NUS,NUS) Ù Smart(NUS)
- Ú ...
|
13
|
- Typically, Ù is the main
connective with $
- Common mistake: using Þ as the main connective with $:
- $x At(x,NUS) Þ Smart(x)
- is true if there is anyone who is not at NUS!
|
14
|
- "x "y is the same as "y "x
- $x $y is the same as $y $x
- $x "y is not the same as "y $x
- $x "y Loves(x,y)
- “There is a person who loves everyone in the world”
- "y $x Loves(x,y)
- “Everyone in the world is loved by at least one person”
- Quantifier duality: each can be expressed using the other
- "x Likes(x,IceCream) Ø$x ØLikes(x,IceCream)
- $x Likes(x,Broccoli) Ø"x ØLikes(x,Broccoli)
|
15
|
- term1 = term2 is true under a given interpretation
if and only if term1 and term2 refer to the same
object
- E.g., definition of Sibling in terms of Parent:
- "x,y Sibling(x,y) Û [Ø(x = y) Ù $m,f Ø (m =
f) Ù Parent(m,x) Ù Parent(f,x) Ù Parent(m,y) Ù
Parent(f,y)]
|
16
|
- The kinship domain:
- Brothers are siblings
- "x,y Brother(x,y) Þ Sibling(x,y)
- One's mother is one's female parent
- "m,c Mother(c) = m Û (Female(m) Ù Parent(m,c))
- “Sibling” is symmetric
- "x,y Sibling(x,y) Û Sibling(y,x)
|
17
|
- The set domain:
- "s Set(s) Û (s = {} ) Ú ($x,s2 Set(s2) Ù s = {x|s2})
- Ø$x,s {x|s} = {}
- "x,s x Î s Û s = {x|s}
- "x,s x Î s Û [ $y,s2}
(s = {y|s2} Ù (x = y Ú x Î s2))]
- "s1,s2
s1 Í s2
Û ("x x Î s1 Þ x Î s2)
- "s1,s2
(s1 = s2) Û (s1 Í s2 Ù s2 Í s1)
- "x,s1,s2
x Î (s1 Ç s2) Û (x Î s1 Ù x Î s2)
- "x,s1,s2
x Î (s1 È s2) Û (x Î s1 Ú x Î s2)
|
18
|
- Suppose a wumpus-world agent is using an FOL KB and perceives a smell
and a breeze (but no glitter) at t=5:
- Tell(KB,Percept([Smell,Breeze,None],5))
- Ask(KB,$a BestAction(a,5))
- I.e., does the KB entail some best action at t=5?
- Answer: Yes, {a/Shoot} ← substitution
(binding list)
- Given a sentence S and a substitution σ,
- Sσ denotes the result of plugging σ into S; e.g.,
- S = Smarter(x,y)
- σ = {x/Hillary,y/Bill}
- Sσ = Smarter(Hillary,Bill)
- Ask(KB,S) returns some/all σ such that KB╞ σ
|
19
|
- Perception
- "t,s,b
Percept([s,b,Glitter],t) Þ Glitter(t)
- Reflex
- "t Glitter(t) Þ BestAction(Grab,t)
|
20
|
- "x,y,a,b Adjacent([x,y],[a,b])
Û
- [a,b] Î {[x+1,y], [x-1,y],[x,y+1],[x,y-1]}
- Properties of squares:
- "s,t At(Agent,s,t) Ù Breeze(t) Þ Breezy(s)
- Squares are breezy near a pit:
- Diagnostic rule - infer cause from effect
- "s Breezy(s) Þ $r Adjacent(r,s) Ù Pit(r)
- Causal rule - infer effect from cause
- "r Pit(r) Þ ["s Adjacent(r,s) Þ Breezy(s) ]
|
21
|
- Identify the task
- Assemble the relevant knowledge
- Decide on a vocabulary of predicates, functions, and constants
- Encode general knowledge about the domain
- Encode a description of the specific problem instance
- Pose queries to the inference procedure and get answers
- Debug the knowledge base
|
22
|
|
23
|
- Identify the task
- Does the circuit actually add properly? (circuit verification)
- Assemble the relevant knowledge
- Composed of wires and gates; Types of gates (AND, OR, XOR, NOT)
- Irrelevant: size, shape, color, cost of gates
- Decide on a vocabulary
- Alternatives:
- Type(X1) = XOR
- Type(X1, XOR)
- XOR(X1)
|
24
|
- Encode general knowledge of the domain
- "t1,t2
Connected(t1, t2) Þ Signal(t1) = Signal(t2)
- "t Signal(t) = 1 Ú Signal(t) = 0
- 1 ≠ 0
- "t1,t2
Connected(t1, t2) Þ Connected(t2, t1)
- "g Type(g) = OR Þ Signal(Out(1,g)) = 1 Û $n Signal(In(n,g)) = 1
- "g Type(g) = AND Þ Signal(Out(1,g)) = 0 Û $n Signal(In(n,g)) = 0
- "g Type(g) = XOR Þ Signal(Out(1,g)) = 1 Û Signal(In(1,g)) ≠
Signal(In(2,g))
- "g Type(g) = NOT Þ Signal(Out(1,g)) ≠
Signal(In(1,g))
|
25
|
- Encode the specific problem instance
- Type(X1) = XOR Type(X2) = XOR
- Type(A1) = AND Type(A2) = AND
- Type(O1) = OR
- Connected(Out(1,X1),In(1,X2)) Connected(In(1,C1),In(1,X1))
- Connected(Out(1,X1),In(2,A2)) Connected(In(1,C1),In(1,A1))
- Connected(Out(1,A2),In(1,O1)) Connected(In(2,C1),In(2,X1))
- Connected(Out(1,A1),In(2,O1)) Connected(In(2,C1),In(2,A1))
- Connected(Out(1,X2),Out(1,C1)) Connected(In(3,C1),In(2,X2))
- Connected(Out(1,O1),Out(2,C1)) Connected(In(3,C1),In(1,A2))
|
26
|
- Pose queries to the inference procedure
- What are the possible sets of values of all the terminals for the adder
circuit?
- $i1,i2,i3,o1,o2
Signal(In(1,C1)) = i1 Ù Signal(In(2,C1)) = i2 Ù Signal(In(3,C1)) = i3
Ù Signal(Out(1,C1))
= o1 Ù
Signal(Out(2,C1)) = o2
- Debug the knowledge base
- May have omitted assertions like 1 ≠ 0
|
27
|
- First-order logic:
- objects and relations are semantic primitives
- syntax: constants, functions, predicates, equality, quantifiers
- Increased expressive power: sufficient to define wumpus world
|