Re: Tried to bind |V|?x to NULL value.

Hans Chalupsky <[email protected]> Mon, 4 Aug 2008 11:38:38 -0700
Newsgroups gmane.comp.ai.powerloom
Message-ID <[email protected]>
With respect to the somewhat terse "explanation": the way you defined
"close-friend" makes it a subrelation of "friend" which is proven
simply via a lookup procedure which takes subrelations into account.
That means it is proven via specialized code as opposed to rule
chaining.  Currently only some of these specialists provide deeper
explanations for their results.  A similar shortcoming is that
PowerLoom currently can't explain results that follow via forward
inference.  We have some funding in the queue that among other things
will address this issue and make the explanation system more complete.

Hans

>>>>> Martin Baldan <[email protected]> writes:

> On Sun, Aug 3, 2008 at 5:21 AM, Thomas Russ <[email protected]> wrote:
>> 
>> OK.  The main thing that is going on is that PowerLoom doesn't really like
>> to do extremely open-ended reasoning, and the rule that you have formulated
>> is very open ended.  It says, essentially, that everything in the universe
>> is the friend of everything else.  That would give a really large result,
>> and PowerLoom doesn't like to attempt to reason if things are that open
>> ended.

>> So, a slightly better formulation might be to introduce additional concepts
>> like person:
>> 
>> (defconcept person)
>> 
>> and then write a rule that applies only to people:
>> 
>> (assert (forall (?x ?y) (=> (and (person ?x) (person ?y))
>> (friend ?x ?y))))
>> 

> Awesome, thanks!!  :)

> All I had to do, then, is to define a concept, like "person" or
> "something" and then every time I define a new object, assert that the
> concept applies to the object. I tried it in the stable version and
> also downloaded the pl snapshot, as you suggested. Here's the little
> plm file I saved from the powerloom interface:
> -------------

> ;;; -*- Mode: Lisp; Package: STELLA; Syntax: COMMON-LISP; Base: 10 -*-

> (CL:IN-PACKAGE "STELLA")

> (DEFMODULE "/PL-KERNEL-KB/PL-USER/FRIENDS"
>   :INCLUDES ("PL-USER"))

> (IN-MODULE "/PL-KERNEL-KB/PL-USER/FRIENDS")

> (IN-DIALECT :KIF)

> (DEFRELATION FRIEND (?X ?Y))
> (DEFRELATION CLOSE-FRIEND (?X ?Y))
> (DEFCONCEPT SOMETHING)
> (DEFCONCEPT PERSON)
> (ASSERT (forall (?x1 ?x2)
>            (<= (FRIEND ?x1 ?x2)
>                (CLOSE-FRIEND ?x1 ?x2))))
> (ASSERT (forall (?x1)
>            (<= (SOMETHING ?x1)
>                (PERSON ?x1))))
> (ASSERT (PERSON ALICE))
> (ASSERT (PERSON BOB))
> (ASSERT (CLOSE-FRIEND ALICE BOB))

> -------------------
> Now, here's a little problem I had with the "why" feature (both in
> pl-3.2.0 and 3.2.21-snapshot). No big deal, but ... maybe I should ask
> in another thread. Anyway, here it goes:

> ----------
> PL-USER |= (load "/home/martin_net/Desktop/cosas/powerloom/powerloom/friends-1")


> PL-USER |= (in-module "FRIENDS")


> FRIENDS |= (ask (friend alice bob))

> TRUE

> FRIENDS |= (set-feature justifications)

> |l|(:JUSTIFICATIONS :EMIT-THINKING-DOTS :JUST-IN-TIME-INFERENCE)

> FRIENDS |= (ask (friend alice bob))

> TRUE

> FRIENDS |= (why)

> 1 (FRIEND ALICE BOB)
>     follows

> -------------

> I expected it to say that (friend alice bob) came from the assertion
> (close-friend alice bob) and the assertion  (forall (?x1 ?x2)   (<=
> (FRIEND ?x1 ?x2)  (CLOSE-FRIEND ?x1 ?x2))).
> What's the problem here?

> Regards,
> _______________________________________________
> powerloom-forum mailing list
> [email protected]
> http://mailman.isi.edu/mailman/listinfo/powerloom-forum