Re: Truth maintenance system issue?
Thomas Russ <[email protected]> Fri, 12 Sep 2008 10:07:33 -0700
| Newsgroups | gmane.comp.ai.powerloom |
|---|---|
| Message-ID | <[email protected]> |
On Sep 12, 2008, at 8:55 AM, Srini Ram wrote:
> I came across this issue the other day:
>
> Given the code:
>
> (defconcept person (?x))
> (defrelation alive (?x))
>
> (defconcept live-person (?x person)
> :<=> (alive ?x)
> )
>
> And the data:
> (assert (alive jack))
>
>
> I can ask :
> STELLA> (ask (live-person jack))
> TRUE ;; ok
> STELLA> (retract (alive jack))
> |P?|(ALIVE JACK) ;; dont
> know if jack is live now
> STELLA> (ask (live-person jack))
> UNKNOWN ;; ok
> STELLA> (assert (not (alive jack)))
> |P|(NOT (ALIVE JACK)) ;; jack is not
> alive
> STELLA> (ask (live-person jack))
> FALSE ;; ok
> STELLA> (ask (alive jack))
> FALSE ;; ok
> STELLA> (assert (alive jack))
> NULL ;;
> jack lives again
Did this fail to signal a clash for you?
When I run PowerLoom on my machine I get the following results:
* (assert (alive jack))
Derived both TRUE and FALSE for the proposition `|P#|(ALIVE JACK)'.
Clash occurred in module `|MDL|/PL-KERNEL-KB/PL-USER'.
:NULL_VALUE
>
> STELLA> (ask (alive jack))
> UNKNOWN ;; error: i
> just asserted this. hope I dont need to retract the (not (alive
> jack) before asserting the opposite?
Actually, you do need to retract (not (alive jack)).
But PowerLoom should have signaled a clash as shown above.
Did that not happen for you? It occurs when I run the latest
snapshot. (3.2.36)
> STELLA> (ask (live-person jack))
> UNKNOWN ;; error;
> same as above
UNKNOWN is the answer that will come back when asking about
inconsistent propositions. There is no inconsistent result truth
value that PowerLoom returns, so UNKNOWN is currently the best answer
that the query system can come up with.
> On a separate sequence (with different code) I got this log:
> ....
> STELLA> (ask (live-person jack))
> UNKNOWN
> STELLA> (assert (not (alive jack)))
> |P#|(ALIVE JACK)
This is already inconsistent. The key is the presence of the "#"
character in the |P#| type key ahead of the proposition. It indicates
that the particular proposition has an inconsistent truth value.
>
> STELLA> (assert (alive jack))
> |P#|(ALIVE JACK) Shouldnt the system warn me of
> inconsistency when I assert a fact and its opposite? This is a
> simple case, but when we have derived facts, this may be important...
> STELLA> (ask (live-person jack))
> UNKNOWN ;; why unknown. at least
> inconsistency should be flagged at query time, if not the time when
> inconsistent facts were asserted
This must have some inconsistent information already present.
Right now, inconsistent information is flagged (once) when the
inconsistency is detected during forward chaining.
>
>
>
> Thanks
> Srini
>
>
>
>
>
>
> _______________________________________________
> powerloom-forum mailing list
> [email protected]
> http://mailman.isi.edu/mailman/listinfo/powerloom-forum