Evaluation of the FGCS Project

David H. D. Warren
Department of Computer Science
University of Bristol

next previous contents
For most user programs, a much more high-level approach is needed, and ideally one 
would like to use declarative logic programming, i.e. logic programming as it was origi-
nally conceived. In declarative logic programming, the program expresses a declarative 
view of the problem as well as providing an operational solution to the problem. By 
contrast, the concurrent LP paradigm provides no declarative view of the problem. At 
best, it can be said to consist of a declarative description of a concurrent algorithm for 
solving the problem. In practice, users of the paradigm take an exclusively operational 
view. Without the declarative underpinning, there is no particular reason to maintain 
the original connection with logic, and every reason to modify the formalism to make it 
better fit its operational purpose. For these reasons, it is arguable whether concurrent 
LP is indeed logic programming in its original sense. 

Be that as it may, the present situation with ICOT systems is that the main user 
language, KL1, is considerably lower level than traditional logic programming lan-
guages such as Prolog. Other, more high-level, user languages have been provided, but 
have had to be implemented on top of KL1. Although ICOT believes the use of KL1 as 
an intermediate language does not entail any unacceptable overhead, there seems good 
reason to believe that higher level languages and inference systems (including Prolog for 
example) could be implemented much more efficiently if a lower level implementation 
language than KL1 were used. In my view, KL1 is too low-level as a user language for 
most purposes, but too high-level to serve as the lowest level implementation language. 

For a kernel language based on logic programming to be acceptable as a general user 
language it must, in my view, provide at least the basic capabilities of Prolog. This 
certainly seemed to be the view in the original FGCS proposal and in the early stages 
of ICOT's work. KL1, however, is considerably weaker than Prolog in that it does 
not provide a builtin search mechanism for finding at least one (and possibly all) solu-
tions to a problem, although it is more powerful than Prolog in that it provides builtin 
coroutining (necessary, amongst other things, to support the concurrent LP paradigm). 

It should be noted that it would be possible to have a kernel language providing 
all the capabilities of Prolog together with all the essential features of KL1 (including 
at least all of flat GHC which is the heart of KL1). Such a language would be quite 
acceptable as a user language, while providing the necessary basis to implement an 
operating system according to the ICOT approach. Such a language is provided by 
the Andorra-I system implemented by my group at Bristol. This language is viewed 
primarily as a high-level extension of Prolog. However, since it includes flat GHC as a 
subset, it is capable of supporting the concurrent LP paradigm. 

Another most important issue, of a completely different nature, is the question of 
whether ICOT was wise to concentrate so much effort on building specialised hardware 
for logic programming, as opposed to building, or using off the shelf, more general pur-
pose hardware not targeted at any particular language or programming paradigm. The 


					- 146 -