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. |