\section*{Implementation units} A description of the implementation has been given in chapter \ref{impl/proto}. Below we repeat the outline of the prototype given in section \ref{impl/comp/proto}, now with the actual unit names. As additional units, not contained in this listing, we have the unit Note that the units Q and IO specify global objects, respectively the objects knot, supervisor and io, that interact when reading in user input. Object declarations in DLP are actually read in as a sequence consisting of goals and clauses. For example the declaration \hspace{1.0cm} \b{tabular}{l @{\hspace{1.5cm}} c @{\hspace{1.5cm}} l } object a { & & object(a). \\ var k, n=1. & corresponds to & var(k, n=1). \\ ... & the sequence & ... \\ } & & end_object. \e{tabular} The clauses and goals are read in one by one, by the global object io, and sent to the global supervisor. For unit clauses, it is tested whether they must be interpreted as a command. C.f. section \ref{code:parse}. Each newly declared DLP object is then added to the object list of the global knot. As a remark, the parser defined in Y allows brackets to be omitted in a number of cases. However, brackets may always be used. When reading the code, keep in mind that variables occurring in methods, not declared as temporary variables, are usually instance variables of the object/class for which the method is defined. However, our use of macros, defined in the units N, U and T, somewhat overturns the scoping rules as used in POOL-X. To aid in understanding the program text, we have included a glossary of the names defined as macros, aliases, globals, classes, functions and methods.