PhD Thesis, 1988
Persistence and Modularity in Prolog
The following is a summary of the salient points of this thesis:
- The thesis reviews the background areas of modularity in prolog, of database and prolog integrations and of external call-out mechanisms, followed by discussions of the design, implementation and evaluation of a prolog with a persistent store.
- The binding mechanism of module systems is seen as a fundamental issue that separates the many systems into dynamically bound predicate based systems or statically bound atom based systems. The Predicate systems complicate meta-level programming but require less declarations than atom based ones so are still favoured by some.
- The persistent Prolog (Perlog) system has atom based visibility, a flat module space, interactive access to the module predicates, a unified view of system and user space, and local data types capable of supporting abstract data types.
- Prolog's internal database is inadequate for large applications and previous research has experimented with integrating it with relational databases. The flatness of the relational data model is inappropriate for applications that manipulate complex objects and as an alternative approach Prolog was interfaced to the object oriented data store of PS-algol, a persistent programming language.
- The partitions of the persistent data store are called databases and these are modelled in Prolog as the module partitions of the program space. Modules provide a scope for updates to Prolog's internal database and then as the units of persistent commitment they allow these changes to be selectively kept or discarded.
- The underlying persistent store supports shared access to its database and ensures that updates are atomic actions: indexing and query optimisation must be encoded separately in PS-algol by the application. A backtracking interface between Prolog and PS-algol leaves every opportunity for PS-algol procedural support and for general access to externally maintained data models.