| Over the last ten years numerous logic languages have been proposed for use in programming distributed systems. However, these languages generally lack adequate features to describe the spatial properties of distributed programs--that is, the properties that describe how the components (i.e., pieces) of a distributed program are organized and distributed over the network of processors. As a consequence, these languages are unsuitable for describing many useful distributed applications.;In this dissertation we describe a new distributed logic programming language called NETLOG (NETwork LOGic programming) that was designed as a tool for specifying and rapidly prototyping a broad range of distributed applications. NETLOG differs from existing logic languages for distributed programming in that it is based on a subset of Distributed Systems Logic (DSL). Moreover, the language is unique in that it supports a unified framework in which both the spatial and temporal properties of distributed computations can be expressed in a concise and elegant fashion. Thus, the language can be used to specify both where (i.e., on which processors) to locate the components of a distributed computation and when to execute them. Accordingly, NETLOG represents a new approach to specifying and reasoning about distributed logic programs.;After giving an informal introduction to NETLOG, we present the syntax and semantics of first-order DSL. We then investigate the formal operational semantics of NETLOG and provide a Plotkin style semantics for the language using transition systems. An implementation scheme designed for implementing NETLOG on a distributed memory multiprocessor is described, and experimental results are provided based on the simulated performance of several NETLOG programs. |