Higher confidence from disjunction introduction?

7 views
Skip to first unread message

Jeff Thompson

unread,
Sep 8, 2009, 3:20:38 AM9/8/09
to open...@googlegroups.com
(Sorry for the longish post...) I'm continuing to educate myself with
simple NARS examples. I hacked up the code locally (not committed) to
display the derivation tree of a judgment which has helped me
considerably. In this example, the input is:
<{b1} --> bird> .
<{b1} --> fly> .
<{b2} --> bird> .
<{b2} --> fly> .
<bird --> fly> ?

After a few cycles, it displays the following expected result: Two
inductions to derive <bird --> fly> and then these are merged.
<bird --> fly>. %1.0000;0.6183% {22: 4;2;3;1}
<bird --> fly>. %1.0000;0.4475% {6: 2;1}
<{b1} --> fly>. %1.0000;0.9000% {0: 2}
<{b1} --> bird>. %1.0000;0.9000% {0: 1}
<bird --> fly>. %1.0000;0.4475% {21: 4;3}
<{b2} --> fly>. %1.0000;0.9000% {0: 4}
<{b2} --> bird>. %1.0000;0.9000% {0: 3}

After at least 65,000 cycles, the following higher-confidence result is
derived:
<bird --> fly>. %1.0000;0.6310% {8710: 4;2;3}
<(|,{b1},bird) --> fly>. %1.0000;0.6310% {8710: 4;2;3}
<(|,{b1},bird) --> fly>. %1.0000;0.4737% {0: 2}
<{b1} --> fly>. %1.0000;0.9000% {0: 2}
<(|,{b1},bird) --> fly>. %1.0000;0.4475% {8709: 4;3}
<{b2} --> fly>. %1.0000;0.9000% {0: 4}
<{b2} --> (|,{b1},bird)>. %1.0000;0.9000% {0: 3}
<{b2} --> bird>. %1.0000;0.9000% {0: 3}

It seems that NARS starts with:
<{b1} --> fly>. %1.0000;0.9000%
then does disjunction introduction to get:
<(|,{b1},bird) --> fly> ==> <{b1} --> fly>
then according to section B.4 in the NAL spec, using the truth value
function Fpld, derives:
<(|,{b1},bird) --> fly>. %1.0000;0.4737%
which implies
<bird --> fly>. %1.0000;0.4737%

Notice that this is stronger confidence than the original derivation of
<bird --> fly> by induction:
<bird --> fly>. %1.0000;0.4475% {6: 2;1}
<{b1} --> fly>. %1.0000;0.9000% {0: 2}
<{b1} --> bird>. %1.0000;0.9000% {0: 1}

My question: Can NARS start with the term {b1} in <{b1} --> fly> and
"arbitrarily" introduce the disjunction with bird to get the term
(|,{b1},bird) as suggested by theorem 21 in the NAL spec? This allows
the implication:
<(|,{b1},bird) --> fly> ==> <{b1} --> fly>
If so, it seems that it would be possible to derive any <X --> fly> with
confidence 0.4737 by using Fpld.

Pei Wang

unread,
Sep 8, 2009, 3:15:09 PM9/8/09
to open...@googlegroups.com
Jeff,

I need to find time to study this case more carefully, but from your
description, it seems to be a more complicated version of the issue
mentioned in NAL-Spec page 42, footnote 2:

=====
The above inference should be used with certain restriction. For
example, "S1 ==> (S1 V S2)" is a theorem, and it is fine to use it and
a judgment of S1 to derives a judgment of (S1 V S2) by deduction,
where S2 can be any term. However, this result should not be used with
the theorem again to derive a judgment of S2 by abduction, otherwise
for any two arbitrary statements, from the truth-value of one, the
truth-value of the other can be derived. Solutions under evaluation
include (1) do not allow conclusions derived in this way to be used
with theorems again as premises, (2) add another stamp to truth-value
to indicate the theorems used to derive it, and repeated use of the
same
theorem is not allowed, (3) only allow theorems to be used in
deduction, not abduction, and (4) add specific restriction to each
theorem on how it can be used.
=====

In the current implementation, the above (1) is used: in
nars.entity.Task, there is a boolean value "structual" (just found the
misspelling), which is set to "true" if the task is derived from a
single premise plus a theorem. Then it shouldn't be used by another
single-premise rule (in the nars.inference.StructuralRules.java)
again. Somehow, this mechanism doesn't block the result you got. You
can create an issue for it.

BTW, if the derivation tree display is desired, you can add it into
the GUi as an optional function.

Pei
Reply all
Reply to author
Forward
0 new messages