ask \(a_1\) \(\wedge\) \(\ldots\) \(\wedge\) \(a_n\)
ask grassisgreen
KB: { a, b }, I: { a }
ask a ⇒ true
ask b ⇒ unknown
KB: { a \(\leftarrow\) b \(\wedge\) c }, I: { \(\cdots\) }
ask a ⇒ ?
aall return “yes”.
b
a \(\wedge\) b
T: { a, b, c }, ask a \(\wedge\) c ⇒ yes
T: { a, b, c }, ask a \(\wedge\) d ⇒ unknown
BUProve(KB) proved = { } repeat select h ← b1 ∧ … ∧ bn in KB where bi ∈ proved and h ∉ proved proved U= { h } until nothing more to select return proved
select h ← b1 ∧ … ∧ bn in KB where bi ∈ proved and h ∉ proved proved U= { h }
KB | proved | |
---|---|---|
a \(\leftarrow\) b \(\wedge\) c |
{ } |
BUProve(KB)
returns all atoms that logically follow from KB
.
BUProve()
return yes.
{ a, b, c, d, e } = BUProve(KB)
ask a ⇒ yes
ask a \(\wedge\) d ⇒ yes
ask f ⇒ unknown
ask a \(\wedge\) f ⇒ unknown
select h ← b1 ∧ … ∧ bn in KB where bi ∈ proved and h ∉ proved proved U= { h }
justified?
If h \(\leftarrow\) b exists and b is true, why is h true?
|
|
if dogissmelly \(\leftarrow\) dogiswet is true
and dogissmelly is true
then ...
a \(\leftarrow\) c \(\wedge\) d
TDProve(KB, query) atoms = query repeat select atom a in atoms choose definite clause a ← B in KB atoms U= atomsIn(B) until atoms = { } return yes
select atom a in atoms choose definite clause a ← B in KB atoms U= atomsIn(B)
KB | atoms | atoms | |
---|---|---|---|
a \(\leftarrow\) b \(\wedge\) c |
{ a } |
{ a } |
select atom a in atoms choose definite clause a ← B in KB atoms U= atomsIn(B)
If I want to prove h true
and I know h \(\leftarrow\) b is true
then can I prove b is true instead?
h ← b t t t t t f f f t f t f - If I know h \(\leftarrow\) b is true
and I know b is true
then h must be true too.
- Via modus ponens.
This page last modified on 2011 September 23. |