The Algernon Abstract Machine: Compiling and Executing Rule-Based Programs

Micheal Hewett · 2000

This report describes the Algernon Abstract Machine, an execution environment for accesslimited logic programs. Like the Warren Abstract Machine for Prolog, the Algernon Abstract Machine (AAM) consists of an assembly-level language and a set of registers on which the language instructions operate. The AAM has a well-defined interface to a knowledge base, enabling it to be used in conjunction with any frame-based knowledge base. We describe the instructions of the AAM language and the process of compiling queries, assertions, and forward and backward chaining rules into AAM code. The restrictions of access limitation are handled by the compiler, so the abstract machine itself can execute general-purpose forward and backward chaining rules. We also describe how the AAM can be used as an interface to a network-accessible knowledge base. Building a system around an abstract machine has several advantages, including enhancing the portability of user-level code to different execution environments. This has been apparent in the success of Prolog (using the Warren Abstract Machine) and Java (using the Java Virtual Machine). Additional advantages include enhanced maintainability, modularity and performance monitoring.

Read the paper · More papers on PaperTik