Here is a quick write-up of the idea regarding surprisingness I
mentioned at the office today...

Suppose we have an Atom-expression without variables, and want to
evaluate its surprisingness.   Or, suppose we have an expression with
variables, but want to evaluate its surprisingness with respect to the
constant terms it contains.

Some examples of such expressions would be

Inheritance Amen man

Inheritance Amen smokes

   Inheritance Amen man
   Inheritance Amen genius

   Inheritance Amen $X
   Inheritance Ben $X
      PredicateNode “understands”
      ConceptNode “Bob”
      VariableNode $X

Inheritance Amen Amen

I suggest that one way to evaluate the surprisingness in such a case is:

For each constant term T (or in general, each combination of terms) in
the expression:

— create a modified version of the expression, in which that term (or
term-set) T is replaced with a variable  V_T

— determine an appropriate context C_T for V_T

— calculate the surprisingness of the expression’s truth-value
relative to C_T for V_T

The surprisingness of the expression can then be evaluated as the sum
of the surprisingness values for the terms.   So, if there is any term
for which “templatizing” on that term (replacing that term with a
variable) produces surprisingness, the expression as a whole is
considered surprising to a certain degree.

For instance

Inheritance Amen smokes

could be modified into

Inheritance $V_Amen smokes

and if the context for $V_Amen is chosen as Human, then the
surprisingness would be calculated by comparing the truth value of

Inheritance Amen smokes

to that of

Inheritance Human smokes

By this method

Inheritance Amen smokes

becomes evaluated as more surprising than

Inheritance Amen man

On the other hand,

Inheritance Amen Amen

is evaluated as completely unsurprising, no matter what the context,
because for any context the truth value of

Inheritance $V_Amen $V_Amen

is 1, which is the same as the truth value of

Inheritance Amen Amen

Example 4) above can be used to illustrate the more advanced case
mentioned above, in which one templatizes sets of terms rather than
individual terms.  One could look at

   Inheritance $V_Amen $X
   Inheritance $V_Ben $X
      PredicateNode “understands”
      ConceptNode “Bob”
      VariableNode $X

and then consider the context for the pair ($V_Amen, $V_Ben) as the
pair (Human, Human), i.e. the set of pairs of humans.

For a first application it will be OK to just templatize individual
terms.  Templatizing sets of terms, however, is necessary to deal with
expressions that are only surprising in terms of the way they
interrelate two terms in respect to their relationship with other

Ben Goertzel, PhD

“I tell my students, when you go to these meetings, see what direction
everyone is headed, so you can go in the opposite direction. Don’t
polish the brass on the bandwagon.” – V. S. Ramachandran

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 post to this group, send email to
Visit this group at
To view this discussion on the web visit
For more options, visit

Reply via email to