Distributed variable server for atomic unification
Alon Kleinman, Yoram Moses, Ehud Y. Shapiro · 1990
Processes in concurrent logic programs communicate and synchronize using shared singleassignment variables.Communication is performed via unification operations, while synchronization is performed through input matching.The more expressive concurrent logic languages employ atomic unification as the basic communication primitive.Atomic unification can be thought of as an atomic transaction that either fails with no trace or succeeds in writing on all of the necessary writable variables occurring in the unification instance.This pa- per presents a distributed variable server algorithm that can be used as the key component in a distributed implementation of concurrent logic languages with atomic unification.The variable server provides an abstraction in which processes can act as if all of the shared variables are local.It thus allows programs to be written for a shared memory model and executed in a system in which memory is distributed.We rigorously specify the requirements the variable server must fulfill, present an algorithm satisfying the specification, and prove its correctness with respect to the specification.The algorithm has been implemented for the language Flat Concurrent Prolog (FCP) and is incorporated in the distributed version of the Logix system.