tasks or subgoals. The authors discuss several control methods such as subtask stacks, agendas and indirect control via menus. The next chapter covers debugging by discussing common syntax errors, tracing program execution by using different levels of watch (which displays information on rule instantiations and working memory modifications), stepping forward and backing up through rule firings, and manipulating WMEs and rules during execution. Having gotten novice users to the point where they can write OPS5 rules, the authors devote the remainder of the book to addressing the real world of OPS5 program development. This starts in chapter 7 with common OPS5 programming techniques and tips for performing calculations related to finding minimums/maximums, extremes, and counting. The authors also discuss how to reformulate rules to avoid several of the minor problems and restrictions of the language. The most common problems novice users encounter involve disjoint operations, especially on condition elements. Interfacing to other computer languages is usually necessary to enable OPS5 programs to perform computations for which OPS5 itself is not well suite& Examples are computation intensive processes, data base access and operating system interfacing. Chapter 8 discusses how to create and use interfaces using the result element. The
/lp/association-for-computing-machinery/book-review-artificial-intelligence-with-statistical-pattern-STsX0iWYM0