Results 1 
9 of
9
Group Communication Specifications: A Comprehensive Study
 ACM Computing Surveys
, 1999
"... Vieworiented group communication is an important and widely used building block for many distributed applications. Much current research has been dedicated to specifying the semantics and services of vieworiented Group Communication Systems (GCSs). However, the guarantees of different GCSs are for ..."
Abstract

Cited by 313 (14 self)
 Add to MetaCart
Vieworiented group communication is an important and widely used building block for many distributed applications. Much current research has been dedicated to specifying the semantics and services of vieworiented Group Communication Systems (GCSs). However, the guarantees of different GCSs are formulated using varying terminologies and modeling techniques, and the specifications vary in their rigor. This makes it difficult to analyze and compare the different systems. This paper provides a comprehensive set of clear and rigorous specifications, which may be combined to represent the guarantees of most existing GCSs. In the light of these specifications, over thirty published GCS specifications are surveyed. Thus, the specifications serve as a unifying framework for the classification, analysis and comparison of group communication systems. The survey also discusses over a dozen different applications of group communication systems, shedding light on the usefulness of the p...
NuPRL’s class theory and its applications
 Foundations of Secure Computation, NATO ASI Series, Series F: Computer & System Sciences
, 2000
"... This article presents a theory of classes and inheritance built on top of constructive type theory. Classes are defined using dependent and very dependent function types that are found in the Nuprl constructive type theory. Inheritance is defined in terms of a general subtyping relation over the und ..."
Abstract

Cited by 15 (7 self)
 Add to MetaCart
This article presents a theory of classes and inheritance built on top of constructive type theory. Classes are defined using dependent and very dependent function types that are found in the Nuprl constructive type theory. Inheritance is defined in terms of a general subtyping relation over the underlying types. Among the basic types is the intersection type which plays a critical role in the applications because it provides a method of composing program components. The class theory is applied to defining algebraic structures such as monoids, groups, rings, etc. and relating them. It is also used to define communications protocols as infinite state automata. The article illustrates the role of these formal automata in defining the services of a distributed group communications system. In both applications the inheritance mechanisms allow reuse of proofs and the statement of general properties of system composition. 1
An InheritanceBased Technique for Building Simulation Proofs Incrementally
 IN 22ND INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE
, 2000
"... This paper presents a formal technique for incremental construction of system specifications, algorithm descriptions, and simulation proofs showing that algorithms meet their specifications. The technique ..."
Abstract

Cited by 14 (5 self)
 Add to MetaCart
This paper presents a formal technique for incremental construction of system specifications, algorithm descriptions, and simulation proofs showing that algorithms meet their specifications. The technique
Naïve computational type theory
 Proof and SystemReliability, Proceedings of International Summer School Marktoberdorf, July 24 to August 5, 2001, volume 62 of NATO Science Series III
, 2002
"... The basic concepts of type theory are fundamental to computer science, logic and mathematics. Indeed, the language of type theory connects these regions of science. It plays a role in computing and information science akin to that of set theory in pure mathematics. There are many excellent accounts ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
The basic concepts of type theory are fundamental to computer science, logic and mathematics. Indeed, the language of type theory connects these regions of science. It plays a role in computing and information science akin to that of set theory in pure mathematics. There are many excellent accounts of the basic ideas of type theory, especially at the interface of computer science and logic — specifically, in the literature of programming languages, semantics, formal methods and automated reasoning. Most of these are very technical, dense with formulas, inference rules, and computation rules. Here we follow the example of the mathematician Paul Halmos, who in 1960 wrote a 104page book called Naïve Set Theory intended to make the subject accessible to practicing mathematicians. His book served many generations well. This article follows the spirit of Halmos ’ book and introduces type theory without recourse to precise axioms and inference rules, and with a minimum of formalism. I start by paraphrasing the preface to Halmos ’ book. The sections of this article follow his chapters closely. Every computer scientist agrees that every computer scientist must know some type theory; the disagreement begins in trying to decide how much is some. This article contains my partial answer to that question. The purpose of the article is to tell the beginning student of advanced computer science the basic type theoretic facts of life, and to do so with a minimum of philosophical discourse and logical formalism. The point throughout is that of a prospective computer scientist eager to study programming languages, or database systems, or computational complexity theory, or distributed systems or information discovery. In type theory, “naïve ” and “formal ” are contrasting words. The present treatment might best be described as informal type theory from a naïve point of view. The concepts are very general and very abstract; therefore they may
LIVE DISTRIBUTED OBJECTS
, 2008
"... Distributed multiparty protocols such as multicast, atomic commit, or gossip are currently underutilized, but we envision that they could be used pervasively, and that developers could work with such protocols similarly to how they work with CORBA/COM/.NET/Java objects. We have created a new program ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
Distributed multiparty protocols such as multicast, atomic commit, or gossip are currently underutilized, but we envision that they could be used pervasively, and that developers could work with such protocols similarly to how they work with CORBA/COM/.NET/Java objects. We have created a new programming model and a platform in which protocol instances are represented as objects of a new type called live distributed objects: stronglytyped building blocks that can be composed in a typesafe manner through a drag and drop interface. Unlike most prior objectoriented distributed protocol embeddings, our model appears to be flexible enough to accommodate most popular protocols, and to be applied uniformly to any part of a distributed system, to build not only frontend, but also backend components, such as multicast channels, naming, or membership services. While the platform is not limited to applications based on multicast, it is replicationcentric, and reliable multicast protocols are important building blocks that can be used to create a variety of scalable components, from shared documents to faulttolerant storage or scalable role delegation. We propose a new multicast architecture compatible with
A OneRound Algorithm for Virtually Synchronous Group Communication in Wide Are Networks
, 2002
"... Group communication services, and especially those that implement Virtual Synchrony semantics, are powerful middleware systems that facilitate the development of faulttolerant distributed applications. In this thesis, we present a high quality, theoretical design of a group communication service th ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Group communication services, and especially those that implement Virtual Synchrony semantics, are powerful middleware systems that facilitate the development of faulttolerant distributed applications. In this thesis, we present a high quality, theoretical design of a group communication service that implements Virtual Synchrony semantics and is aimed for deployment in widearea networks (WANs). The design features a novel algorithm for implementing Virtual Synchrony semantics; the algorithm is more appropriate for WANs than the existing solutions because it involves fewer rounds of communication and operates in a scalable WANoriented architecture. The high quality of the design refers to the level of formality and rigor at which it is done: The design includes formal and precise specifications, algorithms, correctness
Naïve Type Theory
, 2002
"... This article follows the spirit of Halmos' book and introduces type theory without recourse to precise axioms and inference rules, and with a minimum of formalism. I start by paraphrasing the preface to Halmos' book. The sections of this article follow his chapters closely. Every computer scientist ..."
Abstract
 Add to MetaCart
This article follows the spirit of Halmos' book and introduces type theory without recourse to precise axioms and inference rules, and with a minimum of formalism. I start by paraphrasing the preface to Halmos' book. The sections of this article follow his chapters closely. Every computer scientist agrees that every computer scientist must know some type theory; the disagreement begins in trying to decide how much is some. This article contains my partial answer to that question. The purpose of the article is to tell the beginning student of advanced computer science the basic type theoretic facts of life, and to do so with a minimum of philosophical discourse and logical formalism. The point throughout is that of a prospective computer scientist eager to study programming languages, or database systems, or computational complexity theory, or distributed systems or information discovery
Using Timed Input/Output Automata for Implementing Distributed Systems
, 2012
"... In this paper we will discuss one approach to achieving software reliability. In particular, where software systems are modeled using a formal mathematical framework that is used to verify their behaviors. Once verified these are translated to executable code. Formal system specifications and their ..."
Abstract
 Add to MetaCart
In this paper we will discuss one approach to achieving software reliability. In particular, where software systems are modeled using a formal mathematical framework that is used to verify their behaviors. Once verified these are translated to executable code. Formal system specifications and their behavior analysis are valuable tools that should be at the disposal of the software developers, especially when dealing with systems exhibiting high levels of concurrency. However, theoretically sound specifications have a limited impact, unless tools exist that automatically transform these specifications from high level representation to executable code. One challenge that arises with this approach is to provide a comprehensive and usable set of abstractions (such as files, network protocols, console, etc.) that will serve as building blocks of the abstract software models. Another difficulty is to ensure performance of the generated code. Finally, the translation process has to be formally verified to result in executable code that can be deemed as reliable and correct by its construction.
From Formal Methods to Executable Code
"... In this paper we will discuss one approach to achieving software reliability. In particular, where software systems are modeled using a formal mathematical framework that is used to verify their behaviors. Once verified these are translated to executable code. Formal system specifications and their ..."
Abstract
 Add to MetaCart
In this paper we will discuss one approach to achieving software reliability. In particular, where software systems are modeled using a formal mathematical framework that is used to verify their behaviors. Once verified these are translated to executable code. Formal system specifications and their behavior analysis are valuable tools that should be at the disposal of the software developers, especially when dealing with systems exhibiting high levels of concurrency. However, theoretically sound specifications have a limited impact, unless tools exist that automatically transform these specifications from high level representation to executable code. One challenge that arises with this approach is to provide a comprehensive and usable set of abstractions (such as files, network protocols, console, etc.) that will serve as building blocks of the abstract software models. Another difficulty is to ensure performance of the generated code. Finally, the translation process has to be formally verified to result in executable code that can be deemed as reliable and correct by its construction.