Go backward to The evaluate-object operator.
Go up to The evaluate-object operator.
Go forward to Applying the evaluate-object operator.

Evaluation objects
..................

 
As mentioned above, a new object is created when an evaluate-object operator
is selected.  This *evaluation object* is linked to the operator's
^{evaluation} attribute.  The object is created with the following set of
augmentations (of which the first three contain the same information as the
corresponding augmentations of the evaluate-object operator):

   * ^object
     The identifier of the object to be evaluated.
     
   * ^state The current state of the selection subgoal.  The state also has a
     pointer back to the evaluation object.
     
   * ^desired The desired object from the supergoal (the goal in which the
     impasse arose).
     
   * ^operator The identifier of the evaluate-object operator that this
     evaluation object augments.
     
   * ^type The name of the operator that was used to generate the evaluation.
     Evaluate-object is the operator provided by the default productions, but
     other applications might use some other evaluation-generating operator.

Currently, there is default knowledge for two types of evaluations: numeric
and symbolic.  They are distinguished by the augmentation that is added to
the evaluation object when they are computed.  If the augmentation is
{^numeric-value}, its value is assumed to be an integer.  If the augmentation
is ^symbolic-value, its value is assumed to be one of a predefined set of
symbolic values, which includes success and {failure}.  The details of
computing evaluations are explained in Section See Computing evaluations
on page See Computing evaluations.

Some behavior, such as termination of an evaluate-object operator, depends
only on whether any evaluation has been computed.  Therefore, when either a
numeric or symbolic evaluation is added to the evaluation object, a default
production augments the object with ^value t.

The example below shows two evaluation objects.  The first has a numeric
value, and the second has a symbolic value.

(E4 ^object O4 ^state S4 ^desired E3 ^operator O5 ^numeric-value 10 
    ^value t)


(E4 ^object O4 ^state S4 ^desired E3 ^operator O5 
               ^symbolic-value success ^value t)