Results of the Exbed project

The most important theoretical result of the project is the development of the idea of using abstract data types as the basis for rule based programming. It has been shown in the project that based on abstract data types, very flexible architectures for rule based systems can be created. If the programmer of a rule based system is not content with the default facilities of the programming environment he may define his own abstract data types that implement the working memories, the working memory elements, the rule sets, the conflict resolution, and/or the inference engine.

The project has developed a succession of three programming languages, XC, XD, and XE, each of which integrate rules with a procedural programming language. For XE also an integrated programming environment was developed. A number of applications were written using these languages.

Languages

The XC language adds a simple forward chaining rule abstraction to C++ programming language. It was implemented as a preprocessor which generates C++ code. Unix is used as the XC program development environment.

The XE language is a newly developed general purpose programming language that supports data abstraction and rule based programming. The rule abstraction mechanism of XE is more flexible than that of XC. The CLU programming language was used as a basis in the design, but XE is not an extension of CLU. An integrated XE program development environment running in a Symbolics workstation was developed. It contains facilities for program editing, version and configuration management, smart recompilation, and execution monitoring. An Intel 8086 code generator for the target environments was also implemented on top of the tools of the Amsterdam Compiler Kit. A basic library of XE that contains the fundamental data types was written fully in XE. Also a library that contains garbage-collection and other facilities for the target environment as well as a large utility library were written in XE.

For the implementation of the XE environment a set of metaprogramming tools were developed. These are: 1) ROCC, a YACC-like LALR parser generator for the Lisp environment, 2) AST, a small language for representing and manipulating abstract syntax trees, and 3) DG, a small language for defining object classes that contain multiple inheritance.

The XD language takes the rule abstraction mechanism of XE and adds it on top of the C and C++ languages. The implementation is based on precompilation, and three very small assembler routines. It was built on top of the GNU C compiler. Unix is used as the XD program development environment.

Applications

DXPERT is an expert system for DX200 digital switch alarm interpretation. The first prototype was implemented in OPS83.

DPR is a system for the demand pattern recognition of a elevator group. It infers the true type of the traffic at each moment. DPR was implemented in XC. A lift group simulator (ExLift) was constructed to aid the development of DPR.

Filex is a UNIX file system expert that monitors the use of file space and provides the users with services for managing their files and for freeing disk space. It was implemented in XC.

XEDA is a DX200 digital switch diagnostic advisor system. Based on the alarm history of the switch it determines the optimal sequencing of diagnostic tests. XEDA was implemented mainly in XE.


Back to Exbed main page.
Last modified: Aug. 8, 1996
enu@cs.hut.fi