A method description is defined as a refinement of a built-in method or of another already defined method. As an example we will define a new method called Causal-Explanation to be used in the context of causal reasoning. A Causal-Explanation is a method with two subtasks, first it checks whether a given cause is the case, and if so the effect task takes place--and otherwise it fails. It is clear that this method can be defined as a refinement of the conditional built-in method.
Note that cause and effect are unspecified--since they are parameters to be passed in particular causal-explanations. It is not required to write these feature names in the description, but as a matter of style it helps in clarity to write the feature names referred to in a description even if they will not be specified until further refinements are made. Also note that the otherwise subtask of conditional is unspecified, thus when the cause subtask (equivalent to condition subtask) is not the case the method will fail since there is no way it can achieve the otherwise subtask. Next, we will define a more specific causal explanation.
Wet-Causal-Expl has a new parameter, place and determines that a place is wet whenever the feature recent-rain? of that place is true. This is still a generic (or parametric) method, although specialized for a given task. When we refine Wet-Causal-Expl to a specific place we have a closed method. For instance, (define (Wet-Causal-Expl) (place (>> home of John))) is closed.
A method is closed when all the needed
subtasks are specified. In other words, a closed method is amenable to be
evaluated (or applied) and return a result. A method that is not closed will
always fail. When a method is closed it can be incorporated to the feature
of an concept description. Until now, a feature could be specified by named
and path references. Now we can specify a feature with a method to infer
the feature value. In order to distinguish syntactically a reference to a
value from a method to infer a value in a feature of a description, a method
is indicated by a double parenthesis, i.e. a feature with a method is
written ((feature-name closed-method)). The following is an
example of using the causal explanation method.
Note that the double parenthesis is needed when specifying a feature in order to distinguish a method from a reference. If we have omitted the double parenthesis above in the ground-status feature and used a single parenthesis the query result would have been Wet-Causal-Expl-14, that is to say the method itself--since it would have been a reference to a method and thus the method would be considered the feature value of ground-status.