getting groundings for a SatisfactionLink

35 views
Skip to first unread message

Linas Vepstas

unread,
Oct 8, 2017, 12:29:18 PM10/8/17
to Amen Belayneh, opencog, Leung Man Hin
Amen,

I just created and committed some code that stores SatsifactionLink groundings in a generic way. If you use this, I think it makes the OpenPsiImplicator.cc obsolete/not-needed.  An example can be found at https://github.com/opencog/atomspace/blob/master/examples/pattern-matcher/satisfaction.scm

If this does not quite fit your needs, let me know. If you need more things, let me know, I'll see if I can find some nice solutions for them.

--linas
 

--
"The problem is not that artificial intelligence will get too smart and take over the world," computer scientist Pedro Domingos writes, "the problem is that it's too stupid and already has."

Leung Man Hin

unread,
Oct 10, 2017, 4:17:00 AM10/10/17
to Linas Vepstas, Amen Belayneh, opencog
Hi Linas,

Additionally, is there a good way to map those stored groundings, or just one or two of them, to another graph? Just like the graph-rewriting part of a BindLink.

For example if we have stored the groundings of $x and $y from:

SatisfactionLink
    EvaluationLink
        Predicate "foobar"
        ListLink
            Variable "$x"
            Variable "$y"

and we want to put the value of $x to, say something like:

ListLink
    Concept "I"
    Concept "like"
    Variable "$x"

and both the SatisfactionLink and ListLink above are the implicant of an ImplicationLink, what would be a nice solution for this?

Linas Vepstas

unread,
Oct 10, 2017, 5:35:29 AM10/10/17
to Leung Man Hin, Amen Belayneh, opencog
Naively, it would be PutLink, except that PutLink cannot work with values,

For that to work, we would need to invent some kind of GetValueLink  that would work like this:

    GetValueLink
           SomeAtom
           PredicateNode "some key"

and when evaluated, it would look for the key on SomeAtom, and if the key was there, and if the value was an atom, it would return that atom.  In this case, the SomeAtom would be the SatisfactionLink.

For your example it would be
    PutLink
          ListLink
                Concept "I"
                Concept "like"
                Variable "X"
           GetValueLink
                 SatisfactionLink ...
                  PredicateNode ....
              

Not sure if this is a good idea or not.  I'm sort-of getting tired of inventing new atom types to solve every problem.  On the other hand, we've just barely started exploring all the different ways that we might want to use values .... it would be nice to be able to pass them around in atomese...

--linas

Reply all
Reply to author
Forward
0 new messages