Instead of giving the definition in terms of a concrete programming language, we will use simple pseudo programming language encoding.
The body of a program will be specified by using well-known logical operators. The input and output parameters of a procedure are specified using the keywords in and out. For example the notation
FIRST(IN: LIST; OUT: ELEMENT)
means that the input parameter of the procedure FIRST will be bound to the formal parameter LIST and its output value will be bound to ELEMENT. Procedure names are represented in small caps and primitive operations of the pseudo language are highlighted using the boldface font (e.g., if, then, else, while). Capitalized strings are used to denote variables. The result of each inference rule (i.e., the new items) will be added to an agenda using the function ADD-TASK-TO-AGENDA. We will assume a global variable Agenda which is bound to the current agenda. Which priority is determined for a new item is computed by the procedure PRIO. The agenda control is then responsible for adding new items to the state set S according to a given priority. However, a new item is only added to S, if it is not blocked. We will abstract away from a concrete definition of this procedure as well as from the embedding of the inference rules until the agenda-based control mechanism is introduced below.
All inference rules will receive as input an item. We will assume that the global variable is bound to the actual essential feature. The result of each inference rule will be either true of false depending on whether new items could be derived or not. We will indicate this by a boolean variable Candidates?. Its initial value is false and will only be set to true if a new item is added to the Agenda.