Cog-evaluate!

From OpenCog
(Redirected from Cog-evaluate)
Jump to: navigation, search

The cog-evaluate! function is a scheme function that is able to evaluate EvaluationLinks and return a TruthValue and is part of (opencog exec) module. This page attempts to explain what cog-evaluate! does today. This may change over time. cog-evaluate should be distinguished from cog-execute!, which is able to execute functions that return an Atom, and from cog-reduce!, which is able to reduce expressions to normal form.

There are two basic types of links that can be evaluated: "black-box" links, and "clear-box" links. Black-box links can execute arbitrary scheme or python code (returning a TruthValue). Because of this, black-box links cannot be reasoned over, or reduced. Examples of "clear-box" evaluatable links include GreaterThanLink and EqualLink. Evaluatable links can be composed with AndLink, OrLink and NotLink to propage crisp-logic boolean truth values.

At this time, cog-evaluate! can evaluate all clear-box links, and those EvaluationLinks that use a GroundedPredicateNode to specify a scheme or python function to evaluate.

Example

(cog-evaluate!
   (GreaterThanLink
      (PlusLink
         (NumberNode 2)
         (NumberNode 2))
      (TimesLink
         (NumberNode 3)
         (NumberNode 0.5))))

will yield

(stv 1 1)

when evaluated at the guile prompt.