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.