[
    {
        "id": "authors:9e78n-7cc47",
        "collection": "authors",
        "collection_id": "9e78n-7cc47",
        "cite_using_url": "https://resolver.caltech.edu/CaltechAUTHORS:20131010-162127988",
        "type": "monograph",
        "title": "Grid 2020: Towards a Policy of Renewable and Distributed Energy Resources",
        "author": [
            {
                "family_name": "De Martini",
                "given_name": "Paul",
                "clpid": "De-Martini-P"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Fromer",
                "given_name": "N. A.",
                "clpid": "Fromer-N-A"
            }
        ],
        "abstract": "Caltech's Resnick Sustainability Institute fosters transformational\nadvances in energy science and technology through research, education\nand communication. Through its activities, the Institute strives to identify\nand address the most important outstanding challenges and issues in the\ngeneration, storage, transmission, conversion and conservation of energy.\nTo this end, the Institute provides leadership in brokering discussions on\nenergy and sustainability issues among panels of international experts in\ngovernment, academia, and industry. As part of its outreach, the Institute\nissues summary reports documenting these compelling events.\nThe Resnick Institute is solely responsible for the content of this report. The\nviews expressed herein do not necessarily reflect the views of participants\nin these discussions. This report has been independently prepared by the\nResnick Institute to support our efforts to communicate critical energy\nissues to a broad range of stakeholders.\nWe would like to thank the experts who contributed time and information\nfor their willingness to engage in the candid discussions and debate that\ninformed this report.",
        "publisher": "Caltech Library",
        "publication_date": "2012"
    },
    {
        "id": "authors:ebzp5-b3856",
        "collection": "authors",
        "collection_id": "ebzp5-b3856",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:2006.002",
        "type": "monograph",
        "title": "Predicate Signaling in Distributed Sensor Networks",
        "author": [
            {
                "family_name": "Capponi",
                "given_name": "Agostino",
                "clpid": "Capponi-A"
            },
            {
                "family_name": "Chandy",
                "given_name": "Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Fatkullin",
                "given_name": "Ibrahim",
                "clpid": "Fatkullin-I"
            }
        ],
        "abstract": "Nodes in a sensor network can generate messages periodically, or when anomalies are detected, or when queried by other nodes. In this paper we propose a strategy called predicate signaling that generalizes these schemes by generating messages when specified predicates - that can deal with both time and anomalies - hold. We show how power consumption, message generation rates and estimation errors can be controlled by choosing predicates appropriately. We compare predicate signaling with other schemes. We derive formulas based on stochastic differential equations to estimate performance measures in predicate signaling. We analyze measurement data, and we compare simulations based on measured data with results predicted by our theory.",
        "doi": "10.7907/Z9Z899D5",
        "publisher": "California Institute of Technology",
        "publication_date": "2006-01-13"
    },
    {
        "id": "authors:389ex-cjb75",
        "collection": "authors",
        "collection_id": "389ex-cjb75",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:2005.004",
        "type": "monograph",
        "title": "Stream Processing Algorithms that model behavior changes",
        "author": [
            {
                "family_name": "Capponi",
                "given_name": "Agostino",
                "clpid": "Capponi-A"
            },
            {
                "family_name": "Chandy",
                "given_name": "Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "This paper presents algorithms that fuse information in\nmultiple event streams to update models that represent system behavior. System behaviors vary over time; for example, an information network varies from heavily loaded to lightly loaded conditions; patterns of incidence of disease change at the onset of pandemics; file access patterns change from proper usage to improper use that may signify insider threat. The models that represent behavior must be updated frequently to adapt to changes rapidly; in the limit, models must be updated continuously with each new event.  Algorithms that adapt to change in behavior must\n    depend on the appropriate length of history: Algorithms that give too much weight to the distant past will not adapt to changes in behavior rapidly; algorithms that don't consider enough past information may conclude incorrectly, from noisy data, that behavior has changed while the actual behavior remains unchanged.\n    Efficient algorithms are incremental -- the computational time required to incorporate each new event should be small and ideally independent of the length of the history.",
        "doi": "10.7907/Z99K487T",
        "publisher": "California Institute of Technology",
        "publication_date": "2005-02-13"
    },
    {
        "id": "authors:dwgkc-29h22",
        "collection": "authors",
        "collection_id": "dwgkc-29h22",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:2000.cs-tr-00-02",
        "type": "monograph",
        "title": "Theorems about Composition",
        "author": [
            {
                "family_name": "Charpentier",
                "given_name": "Michel",
                "clpid": "Charpentier-M"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "Compositional designs require component specifications that can be composed: Designers have to be able to deduce system properties from components specifications. On the other hand, components specifications should be abstract enough to allow component reuse and to hide substantial parts of correctness proofs in components verifications. Part of the problem is that too abstract specifications do not contain enough information to be composed. Therefore, the right balance between abstraction and composability must be found. This paper explores the systematic construction of abstract specifications that can be composed through specific forms of composition called existential and universal.",
        "doi": "10.7907/Z9BK19C6",
        "publisher": "California Institute of Technology",
        "publication_date": "2000-01-05"
    },
    {
        "id": "authors:92gk0-hta06",
        "collection": "authors",
        "collection_id": "92gk0-hta06",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1999.cs-tr-99-02",
        "type": "monograph",
        "title": "Towards a Compositional Approach to the Design and Verification of Distributed Systems",
        "author": [
            {
                "family_name": "Charpentier",
                "given_name": "Michel",
                "clpid": "Charpentier-M"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "We are investigating a component-based approach for formal design of distributed systems. In this paper, we introduce the framework we use for specification, composition and communication and we apply it to an example that highlights the different aspects of a compositional design, including top-down and bottom-up phases, proofs of composition, refinement proofs, proofs of program texts, and component reuse.",
        "doi": "10.7907/Z93R0QW2",
        "publisher": "California Institute of Technology",
        "publication_date": "1999-01-01"
    },
    {
        "id": "authors:pk6na-bj384",
        "collection": "authors",
        "collection_id": "pk6na-bj384",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1999.cs-tr-99-01",
        "type": "monograph",
        "title": "Examples of Program Composition Illustrating the Use of Universal Properties",
        "author": [
            {
                "family_name": "Charpentier",
                "given_name": "Michel",
                "clpid": "Charpentier-M"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "This paper uses a theory of composition based on existential and universal properties. Universal properties axe useful to describe components interactions through shared variables. However, some universal properties do not appear directly in components specifications and they must be constructed to prove the composed system. Coming up with such universal properties often requires creativity. The paper shows through two examples how this construction can be achieved. The principle used is first presented with a toy example and then applied to a more substantial problem.",
        "doi": "10.7907/Z9ZC80WC",
        "publisher": "California Institute of Technology",
        "publication_date": "1999-01-01"
    },
    {
        "id": "authors:wa67z-4r992",
        "collection": "authors",
        "collection_id": "wa67z-4r992",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1997.cs-tr-97-19",
        "type": "monograph",
        "title": "A General Resource Reservation Framework for Scientific Computing",
        "author": [
            {
                "family_name": "Ramamoorthi",
                "given_name": "Ravi",
                "clpid": "Ramamoorthi-Ravi"
            },
            {
                "family_name": "Rifkin",
                "given_name": "Adam",
                "clpid": "Rifkin-A"
            },
            {
                "family_name": "Dimitrov",
                "given_name": "Boris",
                "clpid": "Dimitrov-B"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "We describe three contributions for distributed resource allocation in scientific applications. First, we present an abstract model in which different resources are represented as tokens of different colors; processes acquire resources by acquiring these tokens. Second, we present distributed scheduling algorithms that allow multiple resource managers to determine custom policies to control allocation of the tokens representing their particular resources. These algorithms allow multiple resource managers, each with its own resource management policy, to collaborate in providing resources for the whole system. Third, we present an implementation of a distributed resource scheduling algorithm framework using our abstract model. This implementation uses Infospheres, which are Internet communication packages written in Java, and shows the benefits of distributing the task of resource allocation to multiple resource managers.",
        "doi": "10.7907/Z9DZ06BJ",
        "publisher": "California Institute of Technology",
        "publication_date": "1997-01-01"
    },
    {
        "id": "authors:73y21-h0483",
        "collection": "authors",
        "collection_id": "73y21-h0483",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1997.cs-tr-97-07",
        "type": "monograph",
        "title": "A Framework for Structured Distributed Object Computing",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Kiniry",
                "given_name": "Joseph",
                "orcid": "0000-0002-3589-2454",
                "clpid": "Kiniry-J-R"
            },
            {
                "family_name": "Rifkin",
                "given_name": "Adam",
                "clpid": "Rifkin-A"
            },
            {
                "family_name": "Zimmerman",
                "given_name": "Daniel",
                "clpid": "Zimmerman-D-M"
            },
            {
                "family_name": "Tanaka",
                "given_name": "Wesley",
                "clpid": "Tanaka-W"
            },
            {
                "family_name": "Weisman",
                "given_name": "Luke",
                "clpid": "Weisman-L"
            }
        ],
        "abstract": "This paper presents a four-faceted framework for distributed applications that use worldwide networks connecting large numbers of people, software tools, monitoring instruments, and control devices. We describe a class of applications, identify requirements for a framework that supports these applications, and propose a design fulfilling those requirements. We discuss some initial experiences using the framework, and compare our design with other approaches.",
        "doi": "10.7907/Z9JQ0Z2W",
        "publisher": "California Institute of Technology",
        "publication_date": "1997-01-01"
    },
    {
        "id": "authors:7ycpz-wz703",
        "collection": "authors",
        "collection_id": "7ycpz-wz703",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1997.cs-tr-96-28",
        "type": "monograph",
        "title": "Parallel Program Archetypes",
        "author": [
            {
                "family_name": "Massingill",
                "given_name": "Berna L.",
                "clpid": "Massingill-B-L"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "A parallel program archetype is an abstraction that captures the common features of a class of problems with similar computational structure and combines them with a parallelization strategy to produce a pattern of dataflow and communication. Such abstractions are useful in application development, both as a conceptual framework and as a basis for tools and techniques. This paper describes an approach to parallel application development based on archetypes and presents two example archetypes with applications.",
        "doi": "10.7907/Z9WW7FP7",
        "publisher": "California Institute of Technology",
        "publication_date": "1997-01-01"
    },
    {
        "id": "authors:dqpbx-g4b39",
        "collection": "authors",
        "collection_id": "dqpbx-g4b39",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1997.cs-tr-97-10",
        "type": "monograph",
        "title": "Webs of Archived Distributed Computations for Asynchronous Collaboration",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Rifkin",
                "given_name": "Adam",
                "clpid": "Rifkin-A"
            },
            {
                "family_name": "Kiniry",
                "given_name": "Joseph",
                "orcid": "0000-0002-3589-2454",
                "clpid": "Kiniry-J-R"
            },
            {
                "family_name": "Zimmerman",
                "given_name": "Daniel",
                "clpid": "Zimmerman-D-M"
            }
        ],
        "abstract": "We identify the mechanisms needed to construct archivable webs of distributed asynchronous collaborations and experiments. The distinguishing feature of our approach is that the component tools, software, data, and even participants are distributed over a worldwide network. We perform a requirements analysis of an infrastructure that supports such applications, and present the Caltech Infospheres Infrastructure as a prototype that satisfies the requirements identified. In describing this prototype, we highlight the useful mechanisms provided, present an algorithm for using the lnfospheres Infrastructure to perform asynchronous global snapshots for archiving, and suggest future areas of exploration.",
        "doi": "10.7907/Z9R78C75",
        "publisher": "California Institute of Technology",
        "publication_date": "1997-01-01"
    },
    {
        "id": "authors:rp6tp-vvv84",
        "collection": "authors",
        "collection_id": "rp6tp-vvv84",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1996.cs-tr-96-11",
        "type": "monograph",
        "title": "Reliable Synchronization Primitives for Java",
        "author": [
            {
                "family_name": "Sivilotti",
                "given_name": "Paolo A. G.",
                "clpid": "Sivilotti-P-A-G"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "Java is an architecture-independent, object-oriented language designed to facilitate code-sharing across the Internet in general, via the Web in particular. Java is multithreaded, providing thread creation and synchronization constructs based on generalized monitors. Although these primitives are appropriate for many windowing applications, they are not necessarily well-suited for the larger class of multithreaded programs that occur as part of distributed systems. We demonstrate how the Java primitives, in conjunction with the object-oriented aspects of the language, can be used to implement a collection of other traditional synchronization paradigms. These paradigms are formally specified, their implementations are rigorously verified, and their use is illustrated with several examples.",
        "doi": "10.7907/Z9P55KHS",
        "publisher": "California Institute of Technology",
        "publication_date": "1996-06-01"
    },
    {
        "id": "authors:xbc5j-67149",
        "collection": "authors",
        "collection_id": "xbc5j-67149",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1996.cs-tr-96-08",
        "type": "monograph",
        "title": "A World-Wide Distributed System Using Java and the Internet",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Dimitrov",
                "given_name": "Boris",
                "clpid": "Dimitrov-B"
            },
            {
                "family_name": "Le",
                "given_name": "Huy",
                "clpid": "Le-Huy"
            },
            {
                "family_name": "Mandelson",
                "given_name": "Jakob",
                "clpid": "Mandelson-J"
            },
            {
                "family_name": "Richardson",
                "given_name": "Matthew",
                "clpid": "Richardson-M"
            },
            {
                "family_name": "Rifkin",
                "given_name": "Adam",
                "clpid": "Rifkin-A"
            },
            {
                "family_name": "Sivilotti",
                "given_name": "Paolo A. G.",
                "clpid": "Sivilotti-P-A-G"
            },
            {
                "family_name": "Tanaka",
                "given_name": "Wesley",
                "clpid": "Tanaka-Wesley"
            },
            {
                "family_name": "Weisman",
                "given_name": "Luke",
                "clpid": "Weisman-L"
            }
        ],
        "abstract": "This paper describes the design of a distributed system built using Java that supports peer-to-peer communication among processes spread across a network. We identify the requirements of a software layer that supports distributed computing, and we propose a design that meets those requirements. Our primary concern is the identification, specification, and implementation of software components that can be composed in different ways to develop correct distributed applications. Though our implementation uses Java, the fundamental ideas apply to any object-oriented language that supports messaging and threads.",
        "doi": "10.7907/Z98W3BBD",
        "publisher": "California Institute of Technology",
        "publication_date": "1996-03-08"
    },
    {
        "id": "authors:0m5jf-b2637",
        "collection": "authors",
        "collection_id": "0m5jf-b2637",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1996.cs-tr-96-19",
        "type": "monograph",
        "title": "Designing Directories in Distributed Systems: A Systematic Framework",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Schooler",
                "given_name": "Eve M.",
                "clpid": "Schooler-E-M"
            }
        ],
        "abstract": "This paper proposes a framework for the systematic design of directory-based distributed applications. We evaluate a space of directory designs using our framework. We present a case study consisting of design, implementation and analysis of directories for a multicast application. Our framework is based on a model that extends the formal concept of process knowledge in distributed systems. This concept is used informally in phrases such as \"process p knows when it is in state s that process q is active.\" We show that this definition of knowledge is too strong for many distributed applications, including directory design. We propose a weaker concept: estimation. We define the meaning of phrases of the form: \"process p in state s estimates with probability 0.9 that process q is active.\" We specify directory design as an optimization problem with the objective function of maximizing estimation probabilities, and with constraints on the amount of bandwidth, computation and storage used. We show how this specification helps in a systematic analysis of alternative directory designs.",
        "doi": "10.7907/Z9736NXN",
        "publisher": "California Institute of Technology",
        "publication_date": "1996-01-01"
    },
    {
        "id": "authors:82d3c-2h141",
        "collection": "authors",
        "collection_id": "82d3c-2h141",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1996.cs-tr-96-15",
        "type": "monograph",
        "title": "Systematic Composition of Objects in Distributed Internet Applications: Processes and Sessions",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Rifkin",
                "given_name": "Adam",
                "clpid": "Rifkin-A"
            }
        ],
        "abstract": "We consider a system with the infrastructure for the creation and interconnection of large numbers of distributed persistent objects. This system is exemplified by the Internet: potentially, every appliance and document on the Internet has both persistent state and the ability to interact with large numbers of other appliances and documents on the Internet. This paper elucidates the characteristics of such a system, and proposes the compositional requirements of its corresponding infrastructure. We explore the problems of specifying, composing, reasoning about, and implementing applications in such a system. A specific concern of our research is developing the infrastructure to support structuring distributed applications by using sequential, choice, and parallel composition, in the anarchic environment where application compositions may be unforeseeable, and interactions may be unknown prior to actually occurring. The structuring concepts discussed are relevant to a wide range of distributed applications; our implementation is illustrated with collaborative Java processes interacting over the Internet, but the methodology provided can be applied independent of specific platforms.",
        "doi": "10.7907/Z9JD4TTH",
        "publisher": "California Institute of Technology",
        "publication_date": "1996-01-01"
    },
    {
        "id": "authors:f3veh-n1b18",
        "collection": "authors",
        "collection_id": "f3veh-n1b18",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1994.cs-tr-94-15",
        "type": "monograph",
        "title": "Mach-Based Channel Library",
        "author": [
            {
                "family_name": "Manohar",
                "given_name": "Rajit",
                "clpid": "Manohar-R"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "[No Abstract]",
        "doi": "10.7907/Z9SJ1HMH",
        "publisher": "California Institute of Technology",
        "publication_date": "1994-07-07"
    },
    {
        "id": "authors:d9tp5-vn745",
        "collection": "authors",
        "collection_id": "d9tp5-vn745",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1994.cs-tr-94-08",
        "type": "monograph",
        "title": "Integrating Task and Data Parallelism with the Collective Communication Archetype",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Manohar",
                "given_name": "Rajit",
                "clpid": "Manohar-R"
            },
            {
                "family_name": "Massingill",
                "given_name": "Berna L.",
                "clpid": "Massingill-B-L"
            },
            {
                "family_name": "Meiron",
                "given_name": "Daniel I.",
                "orcid": "0000-0003-0397-3775",
                "clpid": "Meiron-D-I"
            }
        ],
        "abstract": "A parallel program archetype aids in the development of reliable, efficient parallel applications with common computation/communication structures by providing stepwise refinement methods and code libraries specific to the structure. The methods and libraries help in transforming a sequential program into a parallel program via a sequence of refinement steps that help maintain correctness while refining the program to obtain the appropriate level of granularity for a target machine. The specific archetype discussed here deals with the integration of task and data parallelism by using collective (or group) communication. This archetype has been used to develop several applications.",
        "doi": "10.7907/Z9222RSP",
        "publisher": "California Institute of Technology",
        "publication_date": "1994"
    },
    {
        "id": "authors:2t9n7-40g52",
        "collection": "authors",
        "collection_id": "2t9n7-40g52",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1993.cs-tr-93-31",
        "type": "monograph",
        "title": "A Deterministic Notation for Cooperating Processes",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Foster",
                "given_name": "Ian",
                "clpid": "Foster-I"
            }
        ],
        "abstract": "This paper proposes extensions of sequential programming languages for parallel programming that have the following features: 1. Dynamic Structures The process structure is dynamic: Processes and variables can be created and deleted. 2.Paradigm Integration The programming notation allows shared memory and message passing. 3.Determinism Demonstrating that a program is deterministic -- all executions with the same input produce the same output -- is straightforward. A program can be written so that the compiler can verify that the program is deterministic. Nondeterministic constructs can be introduced in a sequence of refinement steps to obtain greater efficiency if required. The ideas have been incorporated in an extension of Fortran, but the underlying sequential imperative language is not central to the ideas described here.",
        "doi": "10.7907/Z9B85664",
        "publisher": "California Institute of Technology",
        "publication_date": "1993-08-12"
    },
    {
        "id": "authors:xvr20-d4h23",
        "collection": "authors",
        "collection_id": "xvr20-d4h23",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1993.cs-tr-93-24",
        "type": "monograph",
        "title": "Properties of Concurrent Programs",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "A program property is a predicate on programs. In this paper we explore program properties of the form U -&gt; V where U and V are either predicates on states of a program or program properties, and -&gt; satisfies three rules that are also used in reasoning about sequential programs and safety properties of parallel programs. We show how such properties can be used to reason about concurrent programs.",
        "doi": "10.7907/Z9ZS2TJP",
        "publisher": "California Institute of Technology",
        "publication_date": "1993-06-15"
    },
    {
        "id": "authors:0ztwa-hva90",
        "collection": "authors",
        "collection_id": "0ztwa-hva90",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1993.cs-tr-93-29",
        "type": "monograph",
        "title": "Conjunctive Predicate Transformers for Reasoning about Concurrent Computation",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "In this paper we propose a calculus for reasoning about concurrent programs inspired by the wp calculus for reasoning about sequential programs. We suggest predicate transformers for reasoning about progress properties and for deducing properties obtained by parallel composition. The paper presents theorems about the predicate transformers and suggests how they can be used in program design. Familiarity with the wp calculus is assumed.",
        "doi": "10.7907/0ztwa-hva90",
        "publisher": "California Institute of Technology",
        "publication_date": "1993-06-01"
    },
    {
        "id": "authors:aqe68-3s329",
        "collection": "authors",
        "collection_id": "aqe68-3s329",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1993.cs-tr-92-01",
        "type": "monograph",
        "title": "CC++: A Declarative Concurrent Object Oriented Programming Notation",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Kesselman",
                "given_name": "Carl",
                "clpid": "Kesselman-C"
            }
        ],
        "abstract": "CC++ is Compositional C++, a parallel object-oriented notation that consists of C++ with six extensions. The goals of the CC++ project are to provide a theory, notation and tools for developing reliable scalable concurrent program libraries, and to provide a framework for unifying: 1.distributed reactive systems, batch-oriented numeric and symbolic applications, and user-interface systems, 2.declarative programs and object-oriented imperative programs, and 3.deterministic and nondeterministic programs. This paper is a brief description of the motivation for CC++, the extensions to C++, a few examples of CC++ programs with reasoning about their correctness, and an evaluation of CC++ in the context of other research on concurrent computation. A short description of C++ is provided.",
        "doi": "10.7907/Z96M34V8",
        "publisher": "California Institute of Technology",
        "publication_date": "1993-03-12"
    },
    {
        "id": "authors:v8erj-rnd19",
        "collection": "authors",
        "collection_id": "v8erj-rnd19",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1993.cs-tr-92-02",
        "type": "monograph",
        "title": "The Compositional C++ Language Definition",
        "author": [
            {
                "family_name": "Carlin",
                "given_name": "Peter",
                "clpid": "Carlin-P-A"
            },
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Kesselman",
                "given_name": "Carl",
                "clpid": "Kesselman-C"
            }
        ],
        "abstract": "This document gives a concise definition of the syntax and semantics of CC++. Knowledge of the C++ language definition and the C++ language reference manual is assumed.",
        "doi": "10.7907/Z9QF8QWK",
        "publisher": "California Institute of Technology",
        "publication_date": "1993-03-12"
    },
    {
        "id": "authors:6av6m-6gs88",
        "collection": "authors",
        "collection_id": "6av6m-6gs88",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1993.cs-tr-93-02",
        "type": "monograph",
        "title": "Using Triples to Reason About Concurrent Programs",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "This paper presents adaptations of the Hoare triple for reasoning about concurrent programs. The rules for the Hoare triple, familiar to programmers from their experience with sequential programming, can be applied to develop proofs of concurrent programs as well. The basis for the adaptations of the Hoare triple is temporal logic.",
        "doi": "10.7907/Z94Q7S2R",
        "publisher": "California Institute of Technology",
        "publication_date": "1993"
    },
    {
        "id": "authors:yxjc7-m1e56",
        "collection": "authors",
        "collection_id": "yxjc7-m1e56",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1992.cs-tr-92-18",
        "type": "monograph",
        "title": "The Derivation of Compositional Programs",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Kesselman",
                "given_name": "Carl",
                "clpid": "Kesselman-C"
            }
        ],
        "abstract": "This paper proposes a parallel programming notation and a method of reasoning about programs with the following characteristics: (1) Parallel Composition The notation provides different forms of interfaces between processes; the more restrictive the interface, the simpler the proofs of process composition. A flexible interface is that of cooperating processes with a shared address space; proofs of programs that use this interface are based on non-interference [OG76] and temporal logic [Pnu81,CM88, Lam9l]. We also propose more restrictive interfaces and specifications that allow us to use the following specificattion rule: the strongest specification of a parallel composition of processes is the conjunction of the strongest specifications of its components. This rule is helpful in deriving parallel programs. (2) Determinism A process that does not use certain primitives of the notation is guaranteed to be deterministic. Programmers who wish to prove that their programs are deterministic are relieved of this proof obligation if they restrict their programs to a certain subset of the primitives.",
        "doi": "10.7907/Z9GQ6VZZ",
        "publisher": "California Institute of Technology",
        "publication_date": "1992-01-01"
    },
    {
        "id": "authors:g66qn-vsr53",
        "collection": "authors",
        "collection_id": "g66qn-vsr53",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1992.cs-tr-92-13",
        "type": "monograph",
        "title": "Compositional C++: Compositional Parallel Programming",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Kesselman",
                "given_name": "Carl",
                "clpid": "Kesselman-C"
            }
        ],
        "abstract": "A compositional parallel program is a program constructed by composing component programs in parallel, where the composed program inherits properties of its components. In this paper, we describe a small extension of C++ called Compositional C++ or CC++ which is an object-oriented notation that supports compositional parallel programming. CC++ integrates different paradigms of parallel programming: data-parallel, task-parallel and object-parallel paradigms; imperative and declarative programming; shared memory and messagebased programs. CC++ is designed to be transportable across a range of MIMD architectures.",
        "doi": "10.7907/Z94F1NX8",
        "publisher": "California Institute of Technology",
        "publication_date": "1992-01-01"
    },
    {
        "id": "authors:0779e-dms14",
        "collection": "authors",
        "collection_id": "0779e-dms14",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1990.cs-tr-90-10",
        "type": "monograph",
        "title": "A Primer for Program Composition Notation",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Taylor",
                "given_name": "Stephen",
                "clpid": "Taylor-S"
            }
        ],
        "abstract": "This primer describes a notation for program composition. Program composition is putting programs together to get larger ones. PCN (Program Composition Notation) is a programming language that allows programmers to compose programs so that composed programs execute efficiently on uniprocessors, distributed-memory multicomputers or shared-memory multiprocessors. (Revised December 12, 1990)",
        "doi": "10.7907/0779e-dms14",
        "publisher": "California Institute of Technology",
        "publication_date": "1990-01-01"
    },
    {
        "id": "authors:wemek-2ns55",
        "collection": "authors",
        "collection_id": "wemek-2ns55",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1990.cs-tr-90-03",
        "type": "monograph",
        "title": "The Program Composition Project",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Taylor",
                "given_name": "Stephen",
                "clpid": "Taylor-S"
            },
            {
                "family_name": "Kesselman",
                "given_name": "Carl",
                "clpid": "Kesselman-C"
            },
            {
                "family_name": "Foster",
                "given_name": "Ian",
                "clpid": "Foster-I"
            }
        ],
        "abstract": "No abstract available.",
        "doi": "10.7907/wemek-2ns55",
        "publisher": "California Institute of Technology",
        "publication_date": "1990-01-01"
    },
    {
        "id": "authors:jhr7a-4h585",
        "collection": "authors",
        "collection_id": "jhr7a-4h585",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1989.cs-tr-89-05",
        "type": "monograph",
        "title": "The Essence of Distributed Snapshots",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "No abstract available.",
        "doi": "10.7907/jhr7a-4h585",
        "publisher": "California Institute of Technology",
        "publication_date": "1989-01-01"
    },
    {
        "id": "authors:k0wav-gz192",
        "collection": "authors",
        "collection_id": "k0wav-gz192",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1988.cs-tr-88-06",
        "type": "monograph",
        "title": "Theorems on Computations of Distributed Systems",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "This paper presents theorems that are helpful in developing algorithms for the detection of stable properties, recording global snapshots and tracing the execution of distributed systems. The theorems are based on a property of channels.",
        "doi": "10.7907/k0wav-gz192",
        "publisher": "California Institute of Technology",
        "publication_date": "1988-01-01"
    },
    {
        "id": "authors:hm444-6zc04",
        "collection": "authors",
        "collection_id": "hm444-6zc04",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1988.cs-tr-88-16",
        "type": "monograph",
        "title": "Programming Parallel Computers",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            }
        ],
        "abstract": "This paper is from a keynote address to the IEEE International Conference on Computer Languages, October 9, 1988. Keynote addresses are expected to be provocative (and perhaps even entertaining), but not necessarily scholarly. The reader should be warned that this talk was prepared with these expectations in mind.Parallel computers offer the potential of great speed at low cost. The promise of parallelism is limited by the ability to program parallel machines effectively. This paper explores the opportunities and the problems of parallel computing. Technological and economic trends are studied with a view towards determining where the field of parallel computing is going. An approach to parallel programming, called UNITY, is described. UNITY was developed by Jay Misra and myself, and is described in [Chandy]. Extensions to UNITY are discussed; these extensions were motivated by discussions with Chuck Seitz",
        "doi": "10.7907/hm444-6zc04",
        "publisher": "California Institute of Technology",
        "publication_date": "1988-01-01"
    },
    {
        "id": "authors:de5ac-j4z29",
        "collection": "authors",
        "collection_id": "de5ac-j4z29",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1987.5251-tr-87",
        "type": "monograph",
        "title": "Conditional Knowledge as a Basis for Distributed Simulation",
        "author": [
            {
                "family_name": "Chandy",
                "given_name": "K. Mani",
                "clpid": "Chandy-K-M"
            },
            {
                "family_name": "Misra",
                "given_name": "Jay",
                "clpid": "Misra-J"
            }
        ],
        "abstract": "A goal of this paper is to explore different ways of implementing distributed simulations. Distributed simulation grew out of sequential simulation, and it is possible that the way we think about distributed simulation is unduly influenced by its sequential origins. To free ourselves from unnecessary restrictions on the way we design distributed simulations, in this paper we define the distributed simulation problem somewhat differently than in the literature. We propose the concepts of \"knowledge\" and \"conditional knowledge\", to help us obtain a general framework to reason about distributed simulations without too close a coupling with any specific implementation method. The framework appears helpful in designing new ways of distributed simulations. Empirical studies of distributed simulations report widely varying results: some studies report improvements in speed that are almost linearly proportional to the number of computers in the system, while other studies report that distributed simulation is even slower than sequential simulation. The framework proposed in this paper seems to help in explaining the wide differences observed in empirical studies. Using our framework, we attempt to suggest properties that efficient \"general-purpose\" distributed discrete-event simulations must have. The paper assumes little prior knowledge of the literature on simuIation or distributed systems. We hope that the paper will serve as a tutorial in addition to providing additional insight.",
        "doi": "10.7907/de5ac-j4z29",
        "publisher": "California Institute of Technology",
        "publication_date": "1987-01-01"
    }
]