Gisela - A Framework for Definitional Programming

Gisela can be seen as a successor to the programming language GCLA II, which was implemented on top of SICStus Prolog. While GCLA was a nice realization of definitional programming had several drawbacks which became significant when new programming techniques were developed and attempts were made to use GCLA for knowledge representation and reasoning in the MedView project.

It was therefore decided that a new definitional programming system should be developed. When we analyzed our needs we realized that what we wanted was not yet another declarative programming language based on a definitional model. Rather, we wanted to create a general framework for definitional programming which would allow us to implement definitional knowledge structures in a flexible way. Also, an important requirement was that the framework should allow us to easily build state-of-the-art desktop and web applications with embedded definitional reasoning components.

The result is an object-oriented application programming framework (an API) for definitional programming. The framework, called Gisela, implements a new model for definitional programming. Since it is an object-oriented framework where certain classes may be subclassed or replaced in a well-defined manner it is open for experimentation with definitional computations. One important design-choice in the computation model is that definitions are described in an abstract manner only. Thus, any object which implements this abstract model (interface) can be used by the definitional computing machinery provided by the framework. The realization of the system as an object-oriented framework also makes it very simple to include it as a component in GUI-based applications developed using industrial-strength software tools.

It is often easier and clearer to describe definitional programs using a syntactic representation than by creating a number of objects. Therefore, the framework also provides parsers for certain classes of definitions to allow for what we might call 'traditional' declarative programming. An interactive tool for running programs is also provided.

Gisela was originally implemented in Objective-C using the OpenStep frameworks. The source code available for download has only been tested on Mac OS X, but should work using GNUStep on a wide range of Unix-based systems.

Download


Last changed 04-07-15 by Olof Torgersson