In Concurrent Prolog, communication between processes is made through shared variables of which the relationships between the producer and the consumer are indicated explicitly using read-only annotations "?". The read-only annotation provides dataflow-like synchronization between a producer and a consumer. The producer evaluates eagerly, that is, it generates values continually without the request of the consumer. the eager evaluation of a producer may case creations of unnecessary processes and makes the demand-driven computation and the infinite data structure difficult to express.
In this thesis, we propose a new concurrent logic language which is the extension of Concurrent Prolog with lazy evaluation. Lazy relation in CPL is expressed explicitly using new annotation "^" and "&" which are attatched to the variable names to indicate the lazy producer and lazy consumer, respectively. We define a new unification which covers the lazy annotated terms and the inheritance characteristics of lazy annotations and atom elimination rule.
The interpreter of the proposed language is implemented in Quintus-Prolog. The lazy evaluation of CPL prevents the creation of unnecessary processes and provides more expressiveness than CP. But the lazy evaluation of CPL decreases the parallelism of computation and CPL has the overheads for providing lazy evaluation as primitive.