Query
As an example of somewhat more realistic clauses, look at the list processing predicates member and append in slide dlp-control-2.
This manner of specification closely adheres to
standard practice in mathematical logic
and has proven to be a powerful means to
develop knowledge-based systems
(such as expert systems) that rely on logical reasoning.
Objects
The DLP support system provides, in addition to a Prolog-like evaluation mechanism, support for objects (having a state, and methods defined by clauses), processes (to realize the object's own activity as well as to evaluate method calls or goals for the object), and a communication mechanism (that allows for a backtrackable rendezvous).
As an example of an object in DLP, look at the travel agency defined in slide dlp-objects-3, which has a non-logical instance variable cities (containing a number of destinations), a constructor travel (which defines the object's own activity) and two methods, reachable and add.
The travel constructor merely consists of a
(tail-recursive) loop allowing to accept any request,
one at a time.
By specifying which requests may be accepted at
a particular point in the lifetime of the object,
the message interface of the object may be dynamically
specified.
In addition, an explicit accept statement
is needed to guarantee mutual exclusion between
method calls.
Inheritance
agency() :- accept( any ), agency().
book(X,Y) :-
reachable(X),
price(X,Y).
price(amsterdam,5).
...
}
Inheritance in DLP conforms to the subsumption
relation for logical theories,
in that it extends the functionality of a given object
in a strict manner.
DLP allows for multiple inheritance and even checks
for cycles to protect the user from repetitions
or cycles in the inheritance chain.
Technology
Knowledge-intensive applications will increasingly become part of mainstream IT. Distributed declarative languages and systems, of which DLP is just one example are likely to become the vehicle of choice for such applications.
A language such as DLP is particularly well suited for the realization of so-called agents, software processes that act as an intermediary between the end-user of a system and the system itself.
draft version 0.1 (15/7/2001)