1990 | Vijay A. Saraswat, Xerox PARC, Martin Rinard, Stanford University
This paper introduces a new class of concurrent programming languages based on the concept of computing with partial information and the notions of consistency and entailment. The framework is characterized by agents that interact by placing, checking, and instantiating constraints on shared variables. This approach is significant in programming languages because it allows for the representation and manipulation of partial information, in concurrency because it uses constraints for communication and control, and in AI because it provides simple yet powerful mechanisms for controlling inference.
The authors develop the cc family of languages, focusing on cc(↓,→), which includes basic operations like blocking Ask and atomic Tell, along with an algebra of behaviors closed under prefixing, indeterministic choice, interleaving, and hiding. cc(↓,→) is similar to Milner’s CCS but differs in its underlying communication mechanism, offering a general and elegant alternative to "value-passing" in CCS. It also captures the framework of committed-choice concurrent logic programming languages.
The paper discusses the rules of behavior for cc agents, introduces the concept of "visible action," and develops the notion of c-trees and reactive congruence. It presents an equational characterization of reactive congruence for Finitary cc(↓,→). The authors also explore the relationship between cc languages and other concurrent logic programming languages, highlighting the expressive power and simplicity of the cc framework.
The paper concludes by discussing the abstract semantics for cc(↓,→) languages, including the notion of visible actions, reactive equality, and the derivation of a congruence for Finitary cc(↓,→).This paper introduces a new class of concurrent programming languages based on the concept of computing with partial information and the notions of consistency and entailment. The framework is characterized by agents that interact by placing, checking, and instantiating constraints on shared variables. This approach is significant in programming languages because it allows for the representation and manipulation of partial information, in concurrency because it uses constraints for communication and control, and in AI because it provides simple yet powerful mechanisms for controlling inference.
The authors develop the cc family of languages, focusing on cc(↓,→), which includes basic operations like blocking Ask and atomic Tell, along with an algebra of behaviors closed under prefixing, indeterministic choice, interleaving, and hiding. cc(↓,→) is similar to Milner’s CCS but differs in its underlying communication mechanism, offering a general and elegant alternative to "value-passing" in CCS. It also captures the framework of committed-choice concurrent logic programming languages.
The paper discusses the rules of behavior for cc agents, introduces the concept of "visible action," and develops the notion of c-trees and reactive congruence. It presents an equational characterization of reactive congruence for Finitary cc(↓,→). The authors also explore the relationship between cc languages and other concurrent logic programming languages, highlighting the expressive power and simplicity of the cc framework.
The paper concludes by discussing the abstract semantics for cc(↓,→) languages, including the notion of visible actions, reactive equality, and the derivation of a congruence for Finitary cc(↓,→).