High performance logic programming

4urrent logic programming (LP) systems such as Prolog have two major drawbacks. First, they are based on SLD resolution which imparts them a procedural semantics that diverges from their declarative semantics. Second, they adopt a computation scheme that is inherently sequential. We address both these problems in this dissertation. Traditionally, the first drawback has been addressed by extending LP systems with tabling, while the second one has been solved by adopting a computation scheme which allows for parallelism. Realizing an LP system that incorporates tabling or that is based on a computation scheme incorporating parallelism is not an easy task. In this dissertation we present a novel scheme called incremental stack splitting for incorporating or-parallelism in a logic programming system. Using this scheme, or-parallel logic programming systems can be realized on both shared memory as well as distributed memory multiprocessors with ease. We also present a report on a prototype or-parallel system that we have implemented based on our incremental stack-splitting scheme and the message passing interface (MPI). We also present a novel scheme for implementing tabling in an LP system. This scheme, based on dynamic reordering of alternatives is comparable in efficiency to existing schemes but is considerably simpler and thus easier to incorporate in logic programming systems. Results from a prototype implementation of this novel scheme for implementing tabling are also reported. Finally, we propose a model for incorporating parallelism (based on incremental stack-splitting) in tabled logic programming systems (based on dynamic reordering of alternatives).