This paper describes the implementation of PrkAda, a system for delivering, in Ada, Artificial Intelligence and object-oriented applications developed using the ProKappa system. (ProKappa is a modern, multi-paradigm knowledge-based–system development tool. It includes facilities for dynamic object management, rule-based processing, daemons, and graphical developer and end-user interfaces. ProKappa is a successor system to KEE.) Creating PrkAda required creating a run-time, Ada-language, object-system "core," and developing a compiler to Ada from ProTalk (ProKappa's high-level, backtracking-based language). We describe PrkAda ProTalk compiler in a companion paper [5]. This paper concentrates on the issues involved in implementing an AI application delivery core, particularly with respect to Ada, including
• Automatic storage management (garbage collection) without either the cooperation of the compiler or access to the run-time stack,
• Dynamic (weak) typing in a strongly-typed language,
• Dynamic objects (objects that can change their slots and parentage as the program is executing)
• Dynamic function binding in a language designed to preclude "self-modifying programs," and
• Implementation trade-offs in object-oriented knowledge-based systems development environments