Hi Ivan,

thanks for your report, it looks like a pattern matcher bug.

Ideally what you'd do is

1. Try to minimize it even further, if possible (you could start by removing the rewriting term and use GetLink instead of BindLink, etc)
2. Test it using the guile interpreter directly
3. Create a github issue on the atomspace repository (as is contains the pattern matcher code, which is likely the source of the problem).

Also, maybe you should use ChoiceLink, I'm not sure of the current status, but in

https://wiki.opencog.org/w/ChoiceLink

it is said that

"""
Caution: At this time, PresentLink is incompletely implemented, and the above combination of PresentLink and OrLink does not work. If this is what you want to do, use ChoiceLink instead! (If this seems too burdensome for some reason, open a github issue or complain loudly on the mailing list if you need this to work.)
"""

Nil

On 3/2/22 19:10, Ivan V. wrote:
Hi all,

I'm composing some use examples of Atomspace via CogServer, and I'm encountering some strange behavior. If I enter:

*;John attends college
(Evaluation
   (Predicate "Attends college")
   (List
     (Concept "John")))

;trigger graph rewriting
(cog-execute!
   (Bind
     ;if X attends school or X attends college
     (Or
       (Evaluation
         (Predicate "Attends school")
         (List
           (Variable "$X")))

       (Evaluation
         (Predicate "Attends college")
         (List
           (Variable "$X"))))

     ;then X is a student
     (Evaluation
       (Predicate "Is student")
       (List
         (Variable "$X")))))*

I get unexpected output:

*(SetLink)*

On the other hand, if I enter:

*;John attends college
(Evaluation
   (Predicate "Attends college")
   (Concept "John"))

;trigger graph rewriting
(cog-execute!
   (Bind
     ;if X attends school or X attends college
     (Or
       (Evaluation
         (Predicate "Attends school")
         (Variable "$X"))

       (Evaluation
         (Predicate "Attends college")
         (Variable "$X")))

     ;then X is a student
     (Evaluation
       (Predicate "Is student")
       (Variable "$X"))))*

then the output is expectedly:
*
*
*(SetLink
   (EvaluationLink
     (PredicateNode "Is student")
     (ConceptNode "John")))*

The only difference is in presence of ListLink in the first example, or in absence of it in the second.

Is this behavior intended, or the output in the first example is not correct?

Thank you for attention,
- ivan -
**

--
You received this message because you are subscribed to the Google Groups "opencog" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/CAB5%3Dj6V7v4%3DBXDxfRUE8mX7JdsYd-batKHq%3DwzqDbCUR%3D1F_oQ%40mail.gmail.com <https://groups.google.com/d/msgid/opencog/CAB5%3Dj6V7v4%3DBXDxfRUE8mX7JdsYd-batKHq%3DwzqDbCUR%3D1F_oQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/opencog/83a7fd06-dec4-18eb-a9e2-ac6d03baa0f4%40gmail.com.

Reply via email to