26 May 2005 01:00

## Re: play(player, game)

--On Wednesday, May 25, 2005 12:47 -0700 Hans Chalupsky <hans <at> ISI.EDU> wrote:

>>>>>> Octav Popescu <octav <at> cmu.edu> writes:
>
>> Another question: irrespective of the CLOSED declaration, does PowerLoom
>> do  3-value (or 5-value with the defaults) logic computation? Like saying
>> (AND  UNKNOWN FALSE) = FALSE, (AND UNKNOWN TRUE) = UNKNOWN, (OR UNKNOWN
>> TRUE) =  TRUE, (OR UNKNOWN FALSE) = UNKNOWN.
>
> Yes, for example:
>
> STELLA(3): (defrelation happy (?x))
>| r|HAPPY
> STELLA(4): (assert (not (happy joe)))
>| P|(NOT (HAPPY JOE))
> UNKNOWN
> STELLA(6): (ask (and (happy joe) (happy fred)))
> FALSE
> STELLA(7): (ask (or (happy joe) (happy fred)))
> UNKNOWN
> STELLA(8): (ask (or (not (happy joe)) (happy fred)))
> TRUE
> STELLA(10): (ask (and (not (happy joe)) (happy fred)))
> UNKNOWN
> STELLA(11):
>
> Hans

Well, that's great, but then I get:

26 May 2005 03:05

### Re: play(player, game)

>>>>> Octav Popescu <octav <at> cmu.edu> writes:

> --On Wednesday, May 25, 2005 12:47 -0700 Hans Chalupsky <hans <at> ISI.EDU> wrote:
>>>>>>> Octav Popescu <octav <at> cmu.edu> writes:
>>
>>> Another question: irrespective of the CLOSED declaration, does PowerLoom
>>> do  3-value (or 5-value with the defaults) logic computation? Like saying
>>> (AND  UNKNOWN FALSE) = FALSE, (AND UNKNOWN TRUE) = UNKNOWN, (OR UNKNOWN
>>> TRUE) =  TRUE, (OR UNKNOWN FALSE) = UNKNOWN.
>>
>> Yes, for example:
>>
>> STELLA(3): (defrelation happy (?x))
>> | r|HAPPY
>> STELLA(4): (assert (not (happy joe)))
>> | P|(NOT (HAPPY JOE))
>> UNKNOWN
>> STELLA(6): (ask (and (happy joe) (happy fred)))
>> FALSE
>> STELLA(7): (ask (or (happy joe) (happy fred)))
>> UNKNOWN
>> STELLA(8): (ask (or (not (happy joe)) (happy fred)))
>> TRUE
>> STELLA(10): (ask (and (not (happy joe)) (happy fred)))
>> UNKNOWN
>> STELLA(11):
>>
>> Hans

26 May 2005 06:40

### Re: play(player, game)

--On Wednesday, May 25, 2005 6:05 PM -0700 Hans Chalupsky <hans <at> ISI.EDU>
wrote:

>>>>>> Octav Popescu <octav <at> cmu.edu> writes:
>
>> --On Wednesday, May 25, 2005 12:47 -0700 Hans Chalupsky <hans <at> ISI.EDU>
>> wrote:
>>>>>>>> Octav Popescu <octav <at> cmu.edu> writes:
>>>
>>>> Another question: irrespective of the CLOSED declaration, does PowerLoom
>>>> do  3-value (or 5-value with the defaults) logic computation? Like saying
>>>> (AND  UNKNOWN FALSE) = FALSE, (AND UNKNOWN TRUE) = UNKNOWN, (OR UNKNOWN
>>>> TRUE) =  TRUE, (OR UNKNOWN FALSE) = UNKNOWN.
>>>
>>> Yes, for example:
>>>
>>> STELLA(3): (defrelation happy (?x))
>>> | r|HAPPY
>>> STELLA(4): (assert (not (happy joe)))
>>> | P|(NOT (HAPPY JOE))
>>> UNKNOWN
>>> STELLA(6): (ask (and (happy joe) (happy fred)))
>>> FALSE
>>> STELLA(7): (ask (or (happy joe) (happy fred)))
>>> UNKNOWN
>>> STELLA(8): (ask (or (not (happy joe)) (happy fred)))
>>> TRUE
>>> STELLA(10): (ask (and (not (happy joe)) (happy fred)))
>>> UNKNOWN

27 May 2005 06:17

### Re: play(player, game)

>>>>> Octav Popescu <octav <at> cmu.edu> writes:

>> .....
>> Again, this is because of "asymmetric effort" for deriving what you
>> asked for vs. its negation.  When the query engine determined that
>> `(happy fred)' is unknown it stopped there, because that made the
>> conjunction fail.  It does not try to disprove any of the remaining
>> conjuncts to see whether it can prove the conjunction to be false
>> vs. just unknown.  Conceivably, we could be a bit more aggressive
>> there and at least look for shallow disproofs of other conjuncts
>> similar to what we do for atomic propositions.
>>
>> If you explicitly ask for the negation, you get what you expect:
>>
>> STELLA(38): (ask (not (and (happy fred) (happy joe))))
>> TRUE
>>
>> We've considered to add a 3-valued-ask option (similar to Loom) that
>> would ask for the negation of the top-level goal automatically if the
>> positive was found to be unknown, for users who don't mind the extra
>> inference effort for the sake of more complete results.
>> ...
>> Hans

> The main thing that bothers me about the result above is that the evaluation
> of predicates depends on the order of the predicates in the formula, and this
> is not documented anywhere. I assume the predicates could also have
> side-effects, and we should know whether they're going to be evaluated or
> not. I assume that also means that if it has an (OR (P1 A) (P2 B)) and (P1 A)
> is TRUE, it would not evaluate (P2 B).